Spring - IoC 컨테이너와 Bean
이전 포스팅에서는 IoC 가 어떤 것인지 알아보았다. 이번 포스팅에서는 IoC 컨테이너 가 무엇인지 알아보도록 하겠다.
IoC(Inversion of Control) 컨테이너
빈(Bean) 을 만들고 엮어주며 제공해준다. 기본적으로 Bean들은
Singleton
으로 이루어져 있다.멀티 스레드 상황에서
Singleton
을 만드는것은 번거롭고 조심스러운 일이다. 하지만 IoC 컨테이너는 이를 관리해주기 때문에 손쉽게 Bean을 관리할 수 있다.
Singleton scope
의 객체는 사용할때마다 계속 생성해 주는것이 아닌 하나의 인스턴스를 Application 전반에 걸쳐 사용할 수 있다.ApplicationContext
를 이용해 모든 Bean들을 조회할 수 있다.
Bean
IoC 컨테이너가 관리하는 일반적인 객체.
ApplicationContext
가 담고있는 객체이다.new
키워드를 사용해 객체를 만드는것은Bean
에 포함되지 않는다.IntelliJ 에서 해당 클래스가 Bean에 등록이 되어 있는지 아닌지는 해당 클래스 옆에 초록생 콩 아이콘의 유무로 판단할 수 있다.
🤔 어떻게 Bean을 등록하지?
Bean
을 등록하는데는 Component Scanning 과 직접 등록하는 방법이 있다.
- Compoenet Scanning
- @Controller
- @Repository
- @Component
- 등등..
@SpringBootApplication내부의 Annotaion중 하나인 @ComponentScan이 어디부터 Component를 찾아보라고 알려준다. Component를 찾아보는 행위를
Component Scanning
이라고 한다.
직접 등록
Bean설정 파일이 Java 설정파일인지 xml인지에 따라 다르다.
Java 설정 파일인 경우, @Configuration 이라는 annotaion이 붙어있는데, 그 안에 @Bean을 사용해 직접 정의할 수 있다. 해당 JavaConfiguration 파일이 Component Scanining에 의해 읽힐 때,
IoC 컨테이너
에 들어간다.@Configuration public class JavaConfigurationExample { @Bean public TestRespository testRespository(){ return new TestRespository(); //return한 객체가 @Bean에 의해 등록 된다. } }
🤔 Bean을 꺼내 쓰는 방법?
@Autowired Annotaion을 사용하여 손쉽게 사용할 수 있다.
🤔 Life Cycle CallBack 이란?
Annocation Process중에 IoC 컨테이너가 Bean을 등록하고 사용할때 쓰는 Interface 들을 말함
'개발공부 > Spring' 카테고리의 다른 글
[SpringBoot] Spring 에서 자동설정의 이해와 구현 (AutoConfiguration) (0) | 2020.05.03 |
---|---|
[SpringBoot]Spring AOP와 프록시 패턴 (0) | 2020.05.01 |
[SpringBoot]Spring 의존성 주입 DI(Dependency Injection) 와 순환 참조 (0) | 2020.05.01 |
[SpringBoot]Spring IoC(Inversion of Control) (0) | 2020.05.01 |
Spring - JPA에서 Like 기능 수행하기. (0) | 2020.05.01 |