전체 글136 #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. #4 싱글톤 컨테이너 싱글톤 컨테이너 1. 순수한 DI 컨테이너의 문제점 스프링을 사용하지 않는 순수한 DI 컨테이너인 AppConfig는 코드상 요청을 받을 때마다 객체를 새로 생성 하게 된다. [스프링을 사용하지 않은 AppConfig] public class AppConfig { public MemberService memberService() { return new MemberServiceImpl(memberRepository()); } public MemberRepository memberRepository() { return new MemoryMemberRepository(); } public OrderService orderService() { return new OrderServiceImp(memberRepos.. 2021. 5. 14. 이전 1 ··· 29 30 31 32 33 34 다음