본문 바로가기

Spring/Spring Framework

IoC

반응형

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