IoC란?
- Inversion of Control, 의존 관계 주입이라고 하며, 어떤 객체가 사용하는 의존 객체를 직접 만들어 사용하는게 아니라, 주입받아 사용하는 방법.
- 스프링 프레임워크에서는 인스턴스의 생성부터 소멸까지 인스턴스의 생명주기를 개발자가 아닌 IoC 컨테이너가 대신해준다.
스프링 IoC 컨테이너
- BeanFactory
- 애플리케이션 컴포넌트의 중앙 저장소
- 빈 설정 소스로부터 빈 정의를 읽고, 빈을 구성하고 제공한다
장점
- 의존성관리를 IoC컨테이너가 하므로 비즈니스 로직에만 신경을 쓰면 된다.
- 싱글톤객체로 등록 하므로 메모리를 효율적으로 사용할 수 있다.
- 라이프사이클 인터페이스를 이용하여 원하는 작업을 할 수 있다. ex) @PostConstruct
Bean이란?
- 스프링 IoC컨테이너가 관리하는 객체.
- 의존성 주입을 하기위해서는 인스턴스를 빈으로 등록하여야 한다.
ApplicationContext
- BeanFactory를 상속받아 그 기능을 가지고 있으면서 추가적으로 다양한 기능들을 가지고 있는 인터페이스로 많이 사용된다.
그렇다면 빈을 어떻게 등록할 것인가?
- @Component, @Configuration이 붙은 클래스에서 원하는 Bean에다가 @Bean을 설정한다.
- 이 후, ComponentScan을 이용하여 빈을 등록할 수 있는데, @SpringBootApplication에 @ComponentScan이 등록 되어 있어서 @SpringBootApplication이 붙은 클래스패키지위치 하위에 놓은 모든 컴포넌트를 빈으로 등록한다.