Framework8 [Spring] 스프링 핵심 원리 (기본) - 8. 빈(Bean) 스코프 8. 빈 스코프 8.1 스코프 종류 Spring Bean은 기본적으로 싱글톤 스코프로 생성되어 스프링 컨테이너의 시작과 함께 생성되고, 스프링 컨테이너가 종료될 때까지 유지된다. 이 외에 다양한 스코프를 지원한다. 싱글톤: 기본(default) 스코프로서 스프링 컨테이너의 시작과 종료가지 유지되는 가장 넓은 범위의 스코프이다. 프로토타입: 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고, 더 이상 관리하지 않는 매우 짧은 스코프이다. 웹 관련: request: 웹 요청이 들어오고 나갈 때까지만 유지되는 스코프이다. session: 웹 세션이 생성되고 종료될 때까지만 유지되는 스코프이다. application: 웹의 서블릿 컨텍스와 같은 범위로 유지되는 스코프이다. 8.2 프로토타입 .. 2023. 2. 5. [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. 이전 1 2 다음