IoC - 제어의 역전
서비스는 자신의 로직만 실행할 뿐 제어 흐름을 갖지 않는다.
프레임워크 vs 라이브러리
내가 작성한 코드를 대신 제어하고, 실행하면 프레임워크
내가 작성한 코드가 직접 제어의 흐름을 담당하면 라이브러리
DI - 의존관계주입
의존관계주입을 사용하면 정적인 클래스 의존관계를 전혀 손대지 않고 동적인 클래스 의존관계만 수정할 수 있다.
정적 클래스 의존관계
실행하지 않고 import 코드만 보고 알 수 있는 의존관계
동적 클래스 의존관계
실행 시점에서 실제 생성된 객체 인스턴스의 참조가 연결된 의존 관계
IoC, DI 컨테이너
비슷한 말로 사용 되나 최근에는 DI 컨테이너로 사용됨
또는 어셈블러, 오브젝트 팩토리 라고도 불림
AppConfig처럼 객체를 생성하고 관리하며 의존관계를 연결하는 것을 DI 컨테이너라 함
스프링 컨테이너
@Configuration, @Bean을 사용하여 메서드들을 미리 호출하여 반환된 객체를 스프링 컨테이너에 등록한다.
스프링 빈
스프링 컨테이너에 등록된 객체
메서드 명을 이름으로 사용