본문 바로가기

분류 전체보기67

[Spring] 스프링 핵심 원리 (기본) - 7. 빈(Bean) 생명주기 콜백 7. 빈 생명 주기 콜백 7.1 스프링 빈의 이벤트 라이프 사이클 DB 커넥션 풀처럼 애플리케이션 시작 시점에 필요한 연결을 미리 해두고, 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면, 객체의 초기화와 종료 작업이 필요하다. 스프링 빈은 객체 생성 후, 의존관계를 주입하는 순서로 라이프사이클이 동작한다. 따라서, 초기화 작업은 의존관계 주입이 완료된 후에 호출해야 된다. 스프링 빈은 콜백 메소드를 통해 이러한 시점을 알려주는 기능을 지원한다. 또한, 스프링은 스프링 컨테이너가 종료되기 직전에 소멸 콜백을 준다. 스프링 컨테이너 생성 스프링 빈 생성 의존관계 주입 초기화 콜백: 빈이 생성되고 빈의 의존관계 주입이 완료된 후 호출 로직 소멸 전 콜백: 빈이 소멸되기 직전에 호출 스프링 종.. 2023. 2. 5.
[Spring] 스프링 핵심 원리 (기본) - 6. 의존관계 자동 주입 6. 의존관계 자동 주입 6.1 의존관계 주입 방법 (4가지) 6.1.1 생성자 주입 @Component public class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; @Autowired public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) { this.memberRepository = memberRepository; this.discountPolicy = discountPolicy; } } 생성.. 2023. 2. 4.
[Spring] 스프링 핵심 원리 (기본) - 5. 컴포넌트 스캔 5. 컴포넌트 스캔 5.1 개념 지금(이전)까지 스프링 빈을 등록할 떄는 자바 코드에 @Bean을 통해 설정 정보에 직접 등록할 빈을 나열했다. 하지만, 등록해야될 빈의 수가 많아질수록 단순 반복, 설정 정보 증가, 누락 등 문제가 발생할 수 있다. 그래서 스프링은 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔 기능을 제공한다. 더불어, 의존 관계를 자동으로 주입하는 @Autowired 기능도 제공한다. 컴포넌트 스캔을 사용하려면, @ComponentScan을 설정 정보에 붙여주면 된다. (기존 AppConfig와 달리 @Bean으로 등록한 클래스가 하나도 없음) 컴포넌트 스캔은 @Component 어노테이션이 붙은 클래스를 스캔해서 스프링 빈으로 등록한다. 따라서, 각 클래스가 스캔의.. 2023. 2. 4.
[Spring] 스프링 핵심 원리 (기본) - 4. 싱글톤 컨테이너 4. 싱글톤 컨테이너 4.1 웹 애플리케이션과 싱글톤 @Test @DisplayName("스프링 없는 순수한 DI 컨테이너") void pureContainer() { AppConfig appConfig = new AppConfig(); MemberService memberService1 = appConfig.memberService(); MemberService memberService2 = appConfig.memberService(); System.out.println("memberService1 = " + memberService1); System.out.println("memberService2 = " + memberService2); Assertions.assertThat(memberServi.. 2023. 2. 3.
[Spring] 스프링 핵심 원리 (기본) - 3. 스프링 컨테이너와 스프링 빈 3. 스프링 컨테이너 & 스프링 빈 3.1 스프링 컨테이너의 생성 과정 3.1.1 스프링 컨테이너 생성 ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); ApplicationContext를 스프링 컨테이너라 하며, 인터페이스이다. 스프링 컨테이너는 어노테이션 기반 또는 XML 기반의 자바 설정 클래스로 만들 수 있다. (자바 설정 클래스 기반 스프링 컨테이너) new AnnotationConfigApplicationContext(AppConfig.class);는 ApplicationContext(인터페이스)의 '구현체'이다. ### 3.1.2 스프링 빈 등록 스프링 컨테이너는 파라미.. 2023. 2. 3.