제어 역전 제어 역전(IoC)
- 기존 프로그램클라이언트 구현 개체는 프로그램의 제어 흐름을 제어했습니다.
- 반면에 앱 구성이후 구현 개체는 자체 논리 실행만 담당합니다. 제어 흐름은 이제 앱 구성가서 가져가세요 예를 들어 주문 서비스 임플필요한 인터페이스를 호출하지만 어떤 구현 개체가 구현되고 있는지 알지 못합니다.
- 모든 제어 권한이 프로그램으로 유입됩니다. 앱 구성자신이있다 주문 서비스 임플하다 앱 구성생성하고 이 구현이 아닌 경우에도 주문 서비스의 다양한 구현을 만들고 실행할 수 있습니다. 그걸 모르고 주문 서비스 임플자체 논리를 자동으로 실행합니다.
- 프로그램의 제어 흐름에 대한 이러한 외부 제어를 제어 역전이라고 합니다.
프레임워크와 라이브러리
- 프레임워크가 내가 작성하는 코드를 제어하고 대신 실행한다면 프레임워크입니다.
- 반면에 내가 작성한 코드가 제어 흐름을 직접 담당하는 경우에는 프레임워크가 아니라 라이브러리입니다.
종속성 주입 DI
- 주문 서비스 임플은 할인 정책인터페이스에 따라 다릅니다. 어떤 구현 개체가 실제로 사용되는지 알 수 없습니다.
- 종속성은 정적 클래스 종속성과 동적 개체 종속성으로 별도로 간주되어야 합니다.
정적 클래스 종속성
애플리케이션을 실행하지 않고 정적 종속성을 분석할 수 있습니다. 클래스 다이어그램 보기 주문 서비스 임플은 회원 저장소, 할인 정책그것이 중요하다는 것을 알 수 있습니다. 그러나 이 종속성만으로도 객체 주문 서비스 임플주입했는지는 모르겠지만
동적 개체 인스턴스의 종속성
이는 응용 프로그램 실행 시 실제로 생성된 개체 인스턴스의 종속성입니다.
- 종속성 주입은 응용 프로그램 런타임에 외부에서 실제 구현 개체를 만들어 클라이언트에 전달하여 클라이언트와 서버 간의 실제 종속성 관계를 연결하는 것입니다.
- 종속성 주입을 사용하면 정적 클래스 종속성을 변경하지 않고도 동적 개체 인스턴스에 대한 종속성을 쉽게 변경할 수 있습니다.
IoC 컨테이너, DI 컨테이너
- 앱 구성 IoC 컨테이너 또는 DI 컨테이너는 개체를 생성하고 관리할 때 종속성을 연결합니다.
- 종속성 주입에 중점을 두어 최근에는 종종 DI 컨테이너라고 합니다.
봄을 사용
- 앱 구성설정을 구성하는 수단 @건설추가
- 모든 방법에서 @콩append 이렇게 하면 스프링 컨테이너에 스프링 빈으로 등록됩니다.
펜 용기
- 애플리케이션 컨텍스트펜홀더라고 합니다.
- 펜 용기 @건설첨부된 앱 구성설정(구성) 정보로 사용됩니다. 여기 @콩Spring 컨테이너에 작성된 메서드를 호출하여 반환된 객체를 Spring 컨테이너에 등록합니다. Spring 컨테이너에 등록된 객체를 Spring Bean이라고 합니다.
- 봄 콩 @콩가 붙은 메소드 이름은 Spring Bean의 이름으로 사용됩니다.
- 봄 콩 applicationContext.getBean()그것을 찾는 방법.
- 코드가 더 복잡해 보이지만 장점은 무엇입니까?
이 글은 김영한 선생님의 강의 내용을 바탕으로 작성되었습니다.