반응형
DI를 해주는 IoC 컨테이너.
의존성 주입을 대신 해주는 (의존성 주입의 제거권의 역전..) 스프링 IoC 컨테이너
private final OwnerRepository owners;
private final ApplicationContext applicationContext;
public OwnerController(OwnerRepository clinicService, ApplicationContext applicationContext) {
this.owners = clinicService;
this.applicationContext = applicationContext;
}
@GetMapping("/bean")
@ResponseBody
public String getBean() {
return "owners: " + owners + "\n bean: " + applicationContext.getBean(OwnerRepository.class);
}
결과
이 둘은 같은 hash 값을 가진다. 즉 둘은 같은 인스턴스이다.
싱글톤 scope의 객체
application 전방에서 하나의 싱글톤 객체를 사용하도록 IoC 컨테이너가 등록, 관리해 줌
빈으로 등록한 객체만이 Ioc 컨테이너에 들어갈 수 있고, 의존성 주입이 가능 함
빈으로 등록하는 방법
☝🏻 Component Scanning
- @Component
- @Repository ( Repository의 경우, 어노테이션이 없더라도 특정 인터페이스를 상속받은 경우 빈으로 등록 )
- @Service
- @Controlle
- @Configuration
...
Componet Scanning 어노테이션이 붙은 class (boot 프로젝트의 경우 @SpringBootApplication)의 모든 하위 패키지의 모든 클래스를 검사하여 빈으로 등록하거나, 직접 xml 파일에 Component Scan을 할 패키지를 지정
✌🏻 java 설정 파일이나, xml 파일을 통해 설정
@Configuration
public class SampleConfig {
@Bean
public SampleController sampleController() {
return new SampleController();
}
}
// @Controller
public class SampleController {
}
Controller 어노테이션 없어도 빈으로 등록
반응형
'Spring > Spring Framework' 카테고리의 다른 글
Spring Task (0) | 2019.10.04 |
---|---|
Spring Scheduling (0) | 2019.09.27 |
HttpMessageConverter (0) | 2019.08.02 |
batch (0) | 2019.02.25 |
AOP (0) | 2019.02.12 |