본문 바로가기

Spring/Spring 핵심 원리8

#8 빈 스코프 빈 스코프 1. 빈 스코프란? 빈 스코프란 빈이 존재할 수 있는 범위를 뜻한다. 스프링은 싱글톤, 프로토타입, 웹 관련 등 다양한 스코프를 지원한다. 빈 스코프는 다음과 같이 지정할 수 있다. [컴포넌트 스캔 자동 등록] @Scope("prototype") @Component public class HelloBean {} [수동 등록] @Scope("prototype") @Bean PrototypeBean HelloBean() { return new HelloBean(); } 2. 프로토타입 스코프 싱글톤 스코프의 빈은 조회하면 컨테이너는 항상 같은 인스턴스의 스프링 빈을 반환한다. 반면에 프로토타입 스코프를 스프링 컨테이너에서 조회하면 스프링 컨테이너는 항상 새로운 인스턴스를 생성해서 반환한다. 프로토.. 2021. 6. 14.
#7 빈 생명주기 콜백 빈 생명주기 콜백 데이터베이스 커넥션 풀이나, 네트워크 소켓처럼 애플리케이션 시작 시점에 필요한 연결을 미리 해두고, 애플리케이션 종료 시점에 연결을 모두 종료하려는 작업을 진행하려면, 객체의 초기화와 종료 작업이 필요하다. 스프링에서는 이러한 초기화와 종료 작업을 빈 생명주기 콜백을 이용해 다양한 방식으로 지원한다. 1. 스프링 빈의 생명주기 스프링 빈은 객체를 생성하고, 의존관계 주입이 완료되면 스프링 빈에게 콜백 메서드를 통해서 초기화 시점을 알려주는 다양한 기능을 제공한다. 또한 스프링은 스프링 컨테이너가 종료되기 직전에 소멸 콜백을 준다. ■ 스프링 빈의 이벤트 라이플 사이클 스프링 컨테이너 생성 -> 스프링 빈 생성 -> 의존관계 주입 -> 초기화 콜백 -> 사용 ->소멸전 콜백 -> 스프링 .. 2021. 6. 10.
#6 의존관계 자동 주입 의존관계 자동 주입 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; } } 말 그대로 생성자.. 2021. 5. 18.
#5 컴포넌트 스캔 컴포넌트 스캔 1. 컴포넌트 스캔과 의존관계 자동 주입 수동으로 스프링 빈을 등록하는 경우, 자바 코드에서 @Bean을 직접 적고 등록할 스프링 빈을 나열했다. 하지만 이런 방식은 등록해야 할 스피링 빈이 많아질 수록 효율성이 떨어질 수 밖에 없다. 스프링은 설정 정보로 스프링 빈을 나열하지 않아도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔이라는 기능을 제공한다. [컴포넌트 스캔] @Configuration @ComponentScan public class AutoAppConfig { } 컴포넌트 스캔을 사용하려면 @ComponentScan을 설정 정보에 붙여주면 된다. 기존의 설정 정보인 AppConfig와는 달리 AutoAppConfig는 내부에 스프링 빈에 관련된 코드가 단 하나도 없다. 컴포넌트.. 2021. 5. 14.