IOC란?
Note: ioc의 장점
- 업무 수행과 업무 수행의 분리
- 서로 다른 구현 간에 보다 쉽게 전환
- 프로그램의 더 큰 모듈화
- 구성요소를 분리하거나 구성요소의 종속성을 조롱하고 구성요소가 계약을 통해 통신할 수 있도록 허용함으로써 프로그램 테스트의 용이성 증대
IOC흐름
Note:
- 스프링은 모든 의존성 객체를 스프링이 실행될때 만들어 주고 필요한 곳에 주입 해준다.
- 이러한 bean 들은 싱글턴 패턴의 특징을 갖으며 개발자가 컨트롤을 하는 것이 아닌 스프링에게 맡켜서 작업을 처리 한다.
Bean란?
Note:
- 사용법에 앞서서 bean 이 무엇인지 알고 가야한다.
- Spring ioc 컨테이너가 관리하는 자바 객체를 빈(Bean)이라고 부른다.
new
키워드를 사용하는 객체가 아닌 Spring 에서ApplicationContext
가 만들어주고 담고있는 것을 빈이라고 한다.
어떻게 사용을 하나?
@Configuration
public class ExConfiguration {
@Bean
public ExSample toTest() {
return new ExSample();
}
}
@Configuration
을 이용해서 @Bean
을 사용하면 된다.
아래에 사진에서 @Component
를 주목 해야된다.
@ComponentScan
와 @Component
을 이용하는 방법이다.
@ComponentScan
의 정의는 @Component
을 스캔한다는 의미에 있으며 @Component
의 경우 Bean 을 등록할때 사용한다.
spring 은 언제 스캐닝을 자동으로 하는가에 질문에 답은 아래의 사진으로 보여진다.
@SpringBootApplication
에 @ComponentScan
있기 때문에 우리가 설정 어노테이션과 빈 어노테이션을 이용했을때 안에 @Component
가 있기 때문에 bean 이 주입이 되는 것이다.
일전에 다루었던 어노테이션 또한 @Component
상속이 되어 있기 때문에
개발자가 단순한 어노테이션을 사용해서 bean 을 등록이 가능하다.