Spring - 스프링 컨테이너

목차

IoC(Inversion of Control) - 제어의 역전

객체의 생성, 객체간의 의존성 과 같은 프로그래밍의 흐름을 개발자가 아니라 프레임워크나 라이브러리 영역에서 관리 해주는 것을 IoC (제어의 역전) 이라 이야기 합니다. 즉, 프로그램에 대한 제어권이 개발자가 아니라 프레임워크나 라이브러리에서 관리가 됩니다.

스프링 컨테이너와 IoC(Inversion of Control)

스프링에는 스프링 컨테이너를 제공하는데 스프링 컨에티너에서는 객체를 생성, 의종성 주입등을 대신해주기 때문에 IoC 컨테이너 라고 불립니다.

스프링은 IoC 컨테이너 를 사용할 수 있게 ApplicationContext, BeanFactory 인터페이스를 제공합니다.

코드를 통해 알아보기 - 생성자를 통한 의존성 주입

스프링 컨테이너는 아래 코드가 동작하게 만들어줍니다. 코드를 보면 OwnerController 는 OwnerRepository 객체를 의존하는 상황에서 스프링 컨테이너 는 개발자 대신 객체를 생성하고 의존관계를 설정해줍니다. 즉, OwnerRepository 객체를 생성하고 OwnerController 에 주입합니다.

IoC 컨테이너는 이런 객체 (Bean) 를 생성하고 의존성을 관리해줍니다.

class OwnerController {
// new 를 통해 개발자가 직접 객체를 생성하지 않습니다.
private OwnerRepository repo;

// OwnerRepository 를 외부로 부터 주입받는다.
// 생성자 주입을 통해 OwnerRepository 객체를 넣어줍니다.
@Autowired
public OwnerController(OwnerRepository repo) {
this.repo = repo;
}
// repo를 사용합니다.
}
Share