IOC( Inversion of Control)
제어권의 역전
IOC란?
제어권이 역전된 것을 Ioc라고 함
일반적으로 본인이 사용할 의존성은 아래와 같이 본인이 생성함
class OwnerController { |
그러나 여기서 본인인 OwnerController 가 직접관리하는게 아니라 아래와 같이
생성자를 통해 외부에서 객체를 만들어 주입하는것
의존성을 만드는 것은 더이상 OwnerController 가 아니라 외부에서 가능하게 하는것을
제어권이 역전이라고 함
class OwnerController {
|
IOC 컨테이너란?
ApplicatioContext(BeanFactory) 둘중 하나를 사용 하는데 ApplicationContext는 BeanFactory 를 상속하기 때문에 더 다양한 일을 할 수 있음
빈(bean)을 만들고 의존성을 엮어주고 제공해주는게 IOC컨테이너
모든 객체가 빈으로 등록되는 것은 아님
등록 조건
특정 어노테이션을 쓰거나 인터페이스를 상속
@Controller @Service 등등
2. 직접 @Bean어노테이션을 이용하여 등록
@Bean
public JCacheManagerCustomizer petclinicCacheConfigurationCustomizer() {
return cm -> {
cm.createCache("vets", cacheConfiguration());
};
위방법으로 등록된 빈들은 서로간의 의존성 주입을 ioc컨테이너가 해줌
//IOC |
의존성 주입은 ioc컨테이너 안에 있는 빈들끼리만 서로 해주는것을 원칙으로 함
ApplicationContext를 이용하여 저장된 bean 확인
@Autowired |
실제 의존성 주입받은 객체 owners와 ApplicationContext를 이용해 호출한 객체가 동일한 객체인지 확인
@Controller , ApplicationContext applicationContext) { |
결과
org.springframework.data.jpa.repository.support.SimpleJpaRepository@3e6a72 org.springframework.data.jpa.repository.support.SimpleJpaRepository@3e6a72
백기선님의 강좌를 보고 정리했슴돠 백기선님 짱