스프링의 DI 컨테이너를 알기 이전에 프레임워크와 라이브러리의 차이를 알아야 한다 !!
💡 프레임워크 VS 라이브러리
- 쉽게 말하자면 제어권이 누구한테 있나이다.
- 라이브러리는 가져와서 코드를 수정해서 사용해도 된다. 하지만 프레임워크는 제어권이 프레임워크에 있기 때문에 맘대로 바꿔서 사용하지 못한다.
- 즉, 프레임워크는 내가 작성한 코드를 제어하고, 실행한다.
- 예를 들어 Jnuit 이라는 테스트 프레임워크는 Junit 의 규칙대로 코드를 작성하게 된다.
- 라이브러리는 개발자가 작성한 코드가 직정 제어의 흐름을 가진다.
DI(Dependency Injection) : 의존관계 주입
제 개인적인 생각으로는 스프링에서 가장 좋은 기능이라고 생각합니다 !!
- 의존관계 주입이란 애플리케이션 실행시점(런타임)에 외부에서 실제 구현 객체를 생성하고 클라이언트에 전다랳서 클라이언트와 서버의 실제 의존관계가 연결되는 것을 말한다.
- 의존관계 주입을 사용하면 클라이언트는 코드를 변경하지 않고, 클라이언트가 호출하는 대상의 타입 인스턴스를 변경할 수 있다.
DI 컨테이너
- 자바 코드중 설정정보를 담는 클래스인 AppConfig 라는 클래스가 있다.
- 스프링 프레임워크는 AppConfig와 같이 객체를 생성하고 관리하면서 의존관게를 연결해 주는 컨테이너인 DI 컨테이너가 있다.
- IoC컨테이너라고도 하지만 최근에는 DI 컨테이너라고 부른다.