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 을 등록이 가능하다.