[ IoC(Inversion of control) ]
- 제어의 역전
- 프로그램의 제어 흐름을 직접 제어하는 것이 아니라 외부에서 관리하는 것을 제어의 역전이라고 한다.
- 클라이언트 클래스가 직접 구현체를 컨트롤하는 것이 아닌 외부의 Config클래스를 통해 구현체를 받고 클라이언트 클래스는 실행에만 신경을 쓰는 것을 의미한다.
[ DI(Dependency Injection) ]
- 의존관계 주입
- 정적인 클래스 의존관계와, 실행 시점에 결정되는 동적인 인스턴스 의존관계 둘을 분리해서 생각해야 됨
- 정적인 클래스 의존관계를 보면 import코드만 보고 의존 관계를 쉽게 판단할 수 있다.(실행하지 않아도 파악이 가능함)
- 동적인 인스턴스 의존관계는 애플리케이션 실행시점에 실제 생성된 객체 인스턴스의 참조가 연결된 의존관계
- 애플리케이션 실행 시점에 외부에서 실제 구현 객체를 생성하고 클라이언트에 전당 해서 클라이언트와 서버의 실제 의존관계가 연결되는 것을 의존관계 주입이라고 함
- 클라이언트 코드를 변경하지 않고 클라이언트가 호출하는 대상의 타입 인스턴스를 변경할 수 있다.
- 정적인 클래스 의존관계를 변경하지 않고, 동적인 객체 인스턴스를 쉽게 변경할 수 있다.
[ 컨테이너(IoC & DI Container) ]
- 객체를 생성하고 관리하면서 의존관계를 연결해주는 것을 Container라고 한다.
- 의존관계 주입에 초점을 맞추어 최는 에는 주로 DI컨테이너라고 함
- 또는 어셈블러, 오브젝트 팩토리 등으로 불리기도 함
[ 스프링 컨테이너 ]
- ApplicationContext를 스프링 컨테이너라고 한다.
- @Configuration 이 붙은 class를 설정 정보로 사용하며, 클래스 안에 @Bean이라고 적힌 모든 메서드를 모두 호출해서 반환된 객체를 스프링 컨테이너에 등록하며, 이렇게 스프링 컨테이너에 등록된 객체를 스프링 빈이라고 한다.
- 등록된 빈을 applicationContext.getBean()메서드를 통해 가져올 수 있다.
- 관례상 @Bean이 붙은 메서드의 명을 스프링 빈의 이름 그대로 사용한다.
'Back-end > Spring' 카테고리의 다른 글
스프링이란? (0) | 2022.02.04 |
---|---|
File Download (0) | 2021.11.05 |