프로그램의 흐름 제어를 개발자가 아닌 프레임워크나 컨테이너에 맡기는 설계패턴.
IoC의 핵심 아이디어는 객체의 생성, 관리, 그리고 의존성을 애플리케이션의 제어 흐름 외부에서 처리 하도록 하는것.
전통적인 방식
public class MyService {
private final MyRepository myRepository = new MyRepository();
}
IoC 방식
@Component
public class MyService {
private final MyRepository myRepository;
@Autowired
public MyService(MyRepository myRepository) {
this.myRepository = myRepository;
}
}
MyService
가 MyRepository
를 직접 생성하지 않고, 프레임워크가 의존성을 주입