본문 바로가기

Spring/Core

(3)
의존관계 주입 의존관계 주입 의존관계 주입은 런타임 시점에 스프링 컨테이너에 등록된 빈을 @Autowired가 적용된 필드에 주입하여 구현체를 직접 생성하지 않아도 사용이 가능하게끔 하는 것이다. 주입받은 코드는 구현체를 직접적으로 생성하지 않았기 때문에 OCP, DIP를 지킬 수 있다. 의존관계 주입은 크게 생성자 주입, 수정자 주입(setter 주입), 필드 주입이 있다. 기본적으로 스프링은 빈을 먼저 등록 후 의존관계 주입을 하지만, 생성자 주입의 경우 빈 등록 전 객체를 생성하고 의존관계를 주입 후 등록하는 예외가 있다. 생성자 주입 @Component public class OrderServiceImpl implements OrderService { private final MemberRepository me..
스프링 빈 생명주기 스프링 프레임워크는 스프링 컨테이너를 이용하여 @Bean 혹은 @Component 를 적용한 객체를 빈으로 등록한다. 스프링은 의존관계 주입 완료 후 시점과 스프링 컨테이너가 종료되기 직전 시점에 어떠한 동작(콜백)을 수행할 수 있도록 지원한다. 스프링 싱글톤 빈의 이벤트 라이프 사이클 스프링 컨테이너 생성 → 스프링 빈 생성 → 의존관계 주입 → 초기화 콜백 → 사용 → 소멸 전 콜백 → 스프링 종료 초기화 콜백: 빈이 생성되고, 빈의 의존관계 주입이 완료된 후 호출 소멸전 콜백: 빈이 소멸되기 직전에 호출 스프링 빈 생성주기 콜백 지원 InitializingBean, DisposableBean 인터페이스 상속 public interface InitializingBean { void afterPrope..
스프링 컨테이너 스프링 컨테이너 스프링 컨테이너는 자바 객체의 생명 주기(객체의 생성, 소멸)를 관리하여 등록된 빈(Bean)을 조회하고 사용할 수 있으며, 부가기능(환경 변수 설정, 어플리케이션 이벤트, 편리한 리소스 조회 등)을 제공한다. 스프링 컨테이너는 IoC, DI랑도 연관이 깊다. 기존 개발자는 new 키워드를 사용해 직접 객체를 생성하기도 하고 코드 수정이 필요할 경우 새로운 객체로 변경하는 등 직접 관리를 해왔다. 여기에서는 OCP, DIP 위반이 일어났고 스프링 프레임워크는 그러한 문제를 해결하기 위해 스프링 컨테이너를 사용하여 개발자를 대신해서 객체를 직접 관리하게 되었다. 스프링 컨테이너는 @Autowired가 적용된 코드에 의존관계 주입을 한다. 스프링 컨테이너는 빈을 싱글톤으로 관리하며 싱글톤 패..