웹/Spring

[Spring]Spring Framework Basic Framework 개념_IoC, DI | T아카데미

Ellie67 2021. 5. 18. 22:47

-SKplanet Tacademy의 스프링 프레임워크 강의를 듣고 정리한 내용입니다-

IoC(제어권 역전)

- 객체의 생성, 생명주기의 관리까지 모든 객체에 대한 제어권이 바뀌었다는 것을 의미(제어권은 F/W Container 가지고 있음)

- 컴포넌트 의존관계 결정, 설정 생명주기를 해결하기 위한 디자인 패턴

IoC 컨테이너

- 객체에 대한 생성 생명주기를 관리할 있는 기능을 제공하고 있다.

- POJO 대한 권한

 

IoC 분류       

- DL(의존성 검색): Dependency Lookup: 저장소에 저장되어 있는 Bean 접근하기 위해 컨테이너가 제공하는 API 이용해서 Bean Lookup 하는

- DI(의존성 주입): Dependency Injection

스프링은 DI, DL 지원하지만 DL 사용시 컨테이너 종속성이 증가하기 때문에 주로 DI 사용한다.

 

DI

- 클래스 간의 의존관계를 설정(XML, 어노테이션) 정보를 바탕으로 컨테이너가 자동으로 연결해주는

- 개발자들은 설정파일에서 의존관계가 필요하다는 정보를 추가하면 된다.

- 객체 레퍼런스를 컨테이너로부터 주입 받아서, 실행 시에 동적으로 의존관계가 생성된다.

- 컨테이너가 흐름의 주체가 되어 애플리케이션 코드에 의존관계를 주입해 주는 것이다.

<장점>

- 코드가 단순해진다.

- 컴포넌트 간의 결함도가 제거된다.

 

DI 유형

- Setter Injection : Setter 메서드를 이용한 의존성 삽입

- Constructor Injection : 클래스 생성자를 이용한 의존성 삽입

 - Method Injection : 일반 메서드를 이용한 의존성 삽입

 

DI 이용한 클래스 호출방식

Spring DI컨테이너

- Spring DI 컨테이너가 관리하는 객체를 (bean)이라고 하고, 빈들을 관리한다는 의미로 컨테이너를 팩토리라고 부른다.

- ApplicationContext: BeanFactory 확장한

 

BeanFactory ApplicationContext