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;
}
}