IoC(제어의 역전; Inversion of Control)
- 객체의 객체 생성 및 객체간의 의존성 관리를 개발자가 관리하는 것이 아닌
Spring의 IoC 컨테이너가 대신 처리하는 것
IoC의 장점
- 객체 생성과 의존성 관리가 간편
- 코드 유연성 증가
- 객체 간 결합도가 낮아져 유지보수성이 좋아짐
- 단위 테스트가 용이해짐
DI(Dependency Injection)
의존성 주입 객체간의 결합을 느슨하게 해줌
Setter Injection
- Setter 메서드를 이용하여 의존성을 주입하는 방식
- A 객체가 B 객체를 의존하는 경우,
A 객체에 B 객체를 주입할 수 있는 Setter메서드(setB())를 구현하고,
외부에서 B 객체를 생성해서 A 객체에 주입
Constructor Injection
- 생성자를 이용하여 의존성을 주입하는 방식
- A 객체가 B 객체를 의존하는 경우,
A 객체의 생성자에서 B 객체를 인자로 받아 생성하고,
외부에서 A 객체를 생성할 때 B 객체를 인자로 주입