spring 12

[Redis Cache] Cache miss 전략

OilNow 프로젝트에선,데이터가 존재하지 않으면 db에 있는 데이터를 조회,redis에 데이터를 저장하는 cache miss 전략을 사용했습니다.Batch Job이 실행중일 때, DB로 직접 조회하게 될 경우 부하가 커질 수 있으며,데이터 처리 속도가 낮아질 수도 있기 때문에,데이터를 cache storage에 저장하여 조회 성능을 향상시켰습니다.package com.pj.oil.cache;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.Bean;import..

Java 2024.02.27

[Spring] 예제와 함께 보는 다중 데이터 소스, Multiple Data Source(예제: Redis * 2, MariaDB *2)

개요 다양한 데이터를 다루는 경우, 대규모 시스템이나 마이크로 서비스 아키텍처를 사용하는 경우에, 다중 데이터 소스를 적용하는 것을 고려할 수 있고, (관계형 데이터 베이스와 NoSQL 데이터 베이스를 동시에 사용해야 할 필요가 있을 수 있습니다) 다중 데이터 소스를 적용하여 애플리케이션의 성능, 확장성, 유연성 수준을 높일 수 있습니다. 이러한 설정은 데이터 분리, 부하 분산, 백업 및 복구 전략, 그리고 성능 최적화와 같은 여러 가지 이점을 제공합니다. 예컨대, MariaDB 인스턴스 중 하나는 읽기용으로, 다른 하나는 쓰기용으로 사용할 수 있습니다. 또한 각 도메인별로 Redis 인스턴스를 사용하여 확장성과 유연성을 높일 수 있습니다. MariaDB를 읽기용과 쓰기용으로 나누는 것을 통해 부하를 분..

Java 2024.02.23

[JPA, Hibernate] 시작하기 -1, 초기 설정 및 JDBC 사용하기

JPA이전엔 JDBC, Spring JDBC를 주로 사용했습니다. 간단한 프로젝트를 생성하면서 JPA와 Hibernate의 필요성에 대한 고찰을 하겠습니다. 과정은 아래와 같습니다. 1. Spring Boot H2 Project 만들기 2. Spring JDBC 사용하기 3. JPA, Hibernate 사용해서 동일한 작업 하면서 차이점 알아보기 1. Spring Boot H2 Project 만들기 먼저, Spring 프로젝트를 생성합니다. https://ride-dev.tistory.com/26 [SpringFramework] 스프링프로젝트 생성하기 0. 앞서 스프링 프레임워크에 대해 학습하기 위해 스프링 프로젝트를 생성합니다. 1. 프로젝트 생성하기 - spring.io 더보기 start.spring..

Java 2023.12.22

[SpringBoot] Spring Boot vs. Spring vs. Spring MVC

Spring Framework: Dependency Injection스프링 프레임워크는의존성을 정의하고 의존성을 식별하여 자동으로 연결하는의존성 주입이 핵심입니다.다양한 주석을 사용하여 의존성을 정의하고@Component, @Service, ...특정 패키지에서 ComponentScan을 실행하여 해당 패키지에서 정의된 모든 컴포넌트를 식별할 수 있습니다.@ComponentScan모든 컴포넌트와 의존성을 식별하고 나면 이를 자동으로 연결할 수 있습니다.@Autowired이것이 Spring Framework의 코드 작업입니다.하지만 의존성 주입만으로는 강력한 애플리케이션을 빌드할 수 없으며, 다른 프레임워크가 필요합니다.Spring Modules와 Spring Projects는 Spring 생태계를 확장합..

Java 2023.12.22

[SpringFramework] 개념 및 용어 정리

@Component컴포넌트 스캔에 속해있는 특정 클래스에 @Component를 추가하는 경우, 특정 클래스의 인스턴스는 SpringFramework가 관리합니다.DependencyGame은 ProgramRunner의 dependency입니다.Component ScanComponent Scan을 정의하여 Spring이 Component의 위치를 파악할 수 있습니다.패키지 명을 명시하거나, 명시하지 않을 수 있습니다.@ComponentScan("com.example")@ComponentScan명시하지 않으면 해당 ComponentScan이 정의된 패키지 및 하위 패키지가 Scan됩니다.Dependency InjectionSpring이 컴포넌트의 의존성이 무엇인지 식별하고 와이어링 하는 프로세스를 Depend..

Java 2023.12.20

[SpringFramework] PostConstruct & PreDestroy, CDI Jakart Contexts & Dependency Injection

PostConstruct & PreDestroy, CDI Jakart Contexts & Dependency Injection1. PostConstruct 및 PreDestroyPostConstruct초기화를 수행하기 위한 의존성 주입이 완료된 후 실행해야 하는 메서드에서 사용합니다,클래스를 사용하기 전에 호출되어야 합니다.(다른 Bean이 이 Bean을 사용할 수 있게 되기 전에 이 메서드가 호출됩니다)이 때 애플리케이션이 실행되고 Bean이 로드됩니다.PreDestroy컨테이너에서 인스턴스를 삭제하는 과정 중에 있음을 알려주는 콜백 알림으로,보유하고 있던 리소스를 해제하는 데 일반적으로 사용됩니다. 애플리케이션이 종료되기 전에, 컨텍스트에서 Bean이 삭제되기 전에 특정 작업을 하고자 할 때 사용합니..

Java 2023.12.18

[SpringFramework] Lazy Initialization vs. Eager Initialization, Bean Scopes

Lazy Initialization vs. Eager Initialization, Bean Scopes1. 지연 초기화(Lazy)와 즉시 초기화(Eager)지연 초기화는, Spring Bean이 사용직전에 초기화되도록 하는 것이고즉시 초기화는, Application이 시작할 때 Spring Bean이 초기화되도록 하는 것입니다.(Spring은 기본적으로 즉시 초기화로 설정되어 있습니다) 즉시 초기화를 사용하면 Spring 구성에 오류가 있을 경우,애플리케이션이 시작할 때 오류를 바로 확인할 수 있습니다. 지연 초기화는@Component와 @Bean이 사용되는 거의 모든 곳에서 사용할 수 있습니다.지연-해결 프록시가 실제 의존성 대신 주입됩니다.그리고 @Configuration 클래스에서도 사용할 수 있습..

Java 2023.12.17

[SpringFramework] Bean 우선순위 부여(@Primary, @Qualifier)

Bean에 우선순위 부여하기context.getBean(Person.class)위 코드를 통해 Bean으로 만들어진 Person 클래스를 호출할 수 있었습니다.(Person를 반환 유형으로 가진 클래스)그러나 Person를 반환하는 클래스가 여럿이라면 오류가 발생합니다.(조건에 일치하는 후보가 여러 개인 시나리오에서 예외를 출력합니다)Exception in thread "main" org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'com.ride.learnspringframework.Person' available: expected single matching bean but found..

Java 2023.11.29

[SpringFramework] Spring Container, Java Bean vs. POJO vs. Spring Bean

Spring Container, Java Bean vs. POJO vs.  Spring BeanSpring의 주요 개념을 살펴보도록 하겠습니다.1. Spring Container란? (Spring Context란?)(Spring, Spring Container, Spring IOC Container, Spring Context를 혼용하기도 합니다)Spring Container는 Spring Bean과 Spring Bean의 lifecycle(생명주기)을 관리합니다  앞서 여러 Java 클래스와 설정 파일을 만들었습니다.그리고 만든 것들을 Spring Container에 input으로 전달했습니다. POJOs : Person, Address(Plain Old Java Object, Java Class, ..

Java 2023.11.26

[SpringFramework] Spring Bean 생성, 확인, 의존성 주입

Spring이 Bean을 자동으로 생성하고 관리하도록 하면,프로젝트의 규모가 크더라도 손쉽게 관리할 수 있습니다.Java Spring Bean을 만들고 자동 연결하기SpringFramework를 활용하기 위한 설정을 하겠습니다.1. SpringContext 실행하기JVM 내에 SpringContext를 만들기 위해AnnotationConfig 클래스를 사용하여 AnnotationConfigApplicationContext를 만들기 위해설정(@Configuration) 클래스를 사용합니다.(@Configuration클래스로 SpringContext를 실행합니다)public class AppHelloWorldSpring { public static void main(String[] args) { va..

Java 2023.11.26
728x90
반응형