DI
기존방식
IoC (Inversion of Control 역행제어)
▶ IoC(제어권 역전)이란, 객체의 생성, 생명주기의 관리까지 모든 객체에 대한 제어권이 바뀌었다는 것을 의미한다
>> 컴포넌트 의존관계 결정, 설정 및 생명주기를 해결하기 위한 디자인 패턴
▶IoC 분류
>> IoC : Inversion of Control
>> DI : Dependency Injection
>> DL : Dependency Lookup
IoC 컨테이너
▶ 스프링 프레임워크도 객체에 대한 생성 및 생명주기를 관리 할 수 있는 기능을 제공하고 있음. 즉 IoC 컨테이너 기능을 제공한다
▶ IoC 컨테이너는 객체의 생성을 책임지고, 의존성을 관리한다
▶ POJO의 생성, 초기화, 서비스, 소명에 대한 권한을 가진다
▶ 개발자들이 직접 POJO 를 생성 할 수 있지만 컨테이너에게 맡긴다
DL (Dependency Lookup )
▶ 의존성 검색
▶ 저장소에 저장되어 있는 Bean에 접근하기 위해 컨테이너가 제공하는 API 를 이용하여 Bean을 Lookup 하는것
DI (Dependecy Injection)
▶ 의존성 주입
▶ 각 클래스간의 의존관계를 빈 설정(Bean Definition) 정보를 바탕으로 컨테이너가 자동으로 연결해주는 것
▶ 개발자들은 단지 빈 설정 파일에서 의존관계가 필요하다는 정보를 추가하면 된다
▶ 객체 레퍼런스를 컨테이너로부터 주입 받아서, 실행 시에 동적으로 의존관계가 생성된다
DI 장점
▶ 코드가 단순해진다
▶ 컴포넌트 간의 결합도가 제거된다
관련 용어
▶ Bean
>> 스프링이 IoC 방식으로 관리하는 객체라는 뜻
>> 스프링이 직접 생성과 제어를 담당하는 개체를 Bean 이라고 부름
▶ BeanFactory
>> 스프링의 IoC를 담당하는 핵심 컨테이너를 가리킴
>> Bean을 등록, 생성, 조회, 반환하는 기능을 담당함
>> 이 BeanFactory를 바로 사용하지 않고 이를 확장한 ApplicationContext를 주로 이용함
▶ Application Context
>> BeanFactory를 확장한 IoC 컨테이너
>> Bean을 등록하고 관리하는 기능은 BeanFactory와 동일하지만 스프링을 제공하는 각종 부가 서비스를 추가로 제공함
>> 스프링에서는 ApplicationContext를 BeanFactoy 보다 더 많이 사용함
빈 설정 방법
▶ xml 기반 설정 방식
>> 스프링 1.0
>> xml 파일에 <bean> 요소를 빈으로 정의한다
>> <constructor-arg>나 <property> 요소로 의존성을 주입한다.
▶ Annotation 기반 설정 방식
>> 스프링 2.5
>> @Component 같은 어노테이션이 부여된 클래스를 탐색하여 DI 컨테이너에 빈을 등록한다
▶ Java 기반 설정 방식
>> 스프링 3.0
>> 자바 클래스에 @Configuration을, 메소드에 @Bean 어노테이션을 사용해 빈을 정의한다
'Programming > Java + Spring' 카테고리의 다른 글
[Spring] 게시판 실습 / 준비 단계 (0) | 2022.09.27 |
---|---|
[Spring] DI 실습 (0) | 2022.09.26 |
[Spring] 프레임워크 (0) | 2022.09.26 |
[Java] 형변환 (0) | 2022.07.17 |
[Java] 변수 (0) | 2022.07.17 |
댓글