IoC와 DI는 다른 개념DI 없이도 IoC를 만족하는 프로그램을 만들기 가능IoC는 프로그램 제어권을 역전시키는 개념DI는 해당 개념을 구현하기 위해 사용하는 디자인 패턴 중 하나DI(Dependency Injection)은 의존성 주입이란 뜻스프링에서 말하는 의존성 주입이란, 스프링 컨테이너가 객체 간 의존 관계를 개발자가 정의한 Bean 등록 정보를 바탕으로 자동으로 주입해주는 것Controller에서 Service나 Repository 객체를 사용 시, new 키워드를 통해 컨트롤러에서 객체를 직접 생성하여 사용하지 않고 의존성 주입을 통해 스프링 컨테이너에 생성된 객체를 받아 사용하고 있는 것을 볼 수 있음bean 설정 정보에 등록을 하게 되어 의존성 주입이 동작함이를 통해
객체간 결합도를 낮추고,코드의 양을 줄여주고,테스트를 용이하게 하여,개발 및 유지보수를 더 쉽게 하게 하는 장점을 가짐
@Controller
public class Controller {
@Autowired
Service service;
}
@Controller
public class Controller {
private Service service;
@Autowired
public void setService(Service service) {
this.service = service;
}
}
@Controller
public class Controller {
private final Service service;
@Autowired // 생성자가 1개만 있을 경우 생략 가능
public Controller(Service service) {
this.service = service;
}
}