<<<<<< 5. Dependency Injection >>>>>>
목차 : 1. DI개념, 2. 스프링 컨테이너의 이해와 사용
1. DI개념
DI(Dependency Injection)
DI의 개념
각 클래스간의 의존관계를 빈 설정 (Bean Definition) 정보를 바탕으로 컨테이너가 자동으로 연결해주는 것을 말함
—> 의존성을 주입해주는 것
—> 의존성 : 다른 클래스의 다른 객체를 멤버 변수를 사용하거나 메소드 내에서 객체를 사용하는 것을 Dependency 관계 또는 사용한다라고 한다.
—> 사용하는 객체를 new라는 키워드로 생성해서 사용하는데, 이것을 자동으로 생성해서 주입을 해주는 것이 Dependency Injection이다.
—> 장점 : 자주 사용되는 객체의 경우, 사용할때마다 생성과 소멸은 오버헤드가 되는데 이것을 자동으로 해주게 되면 소스코드가 간결해주고 성능상으로 향상된다.
- 개발자들은 단지 빈 설정파일에서 의존관계가 필요하다는 정보를 추가하면 됨 —> 선언적 방법
- 객체 레퍼런스를 컨테이너로부터 주입 받아서, 실행 시에 동적으로 의존관계가 생성됨
- 컨테이너가 흐름의 주체가 되어 애플리케이션 코드에 의존관계를 주입해주는 것
- Di 장점 : 코드 단순, 컴포넌트 간의 결합도가 제거
DI의 유형
- Setter Injection - Setter 메서드를 이용한 의존성 삽입
- Constructor Injection - 생성자를 이용한 의존성 삽입
- Method Injection - 일반 메서드를 이용한 의존성 삽입
—> setter와 constructor Injection을 가장 자주 사용함
2. 스프링 컨테이너의 이해와 사용
Spring DI 컨테이너
Spring DI 컨테이너의 개념
Spring DI 컨테이너가 관리하는 객체를 빈(bean)이라고 하고, 이 빈(bean)들을 관리한다는 의미로 컨테이너를 빈 팩토리(Bean Factory)라고 부른다.
<interface> Application Context —> <interface> Bean Factory
- 객체의 생성과 객체 사이의 런타임(run-time)관계를 DI관점에서 볼때는 컨테이너를 Bean Factory라고 한다.
- Bean Factory에 여러가지 컨테이너 기능을 추가하여 애플리케이션 컨텍스트(Application Context)라고 부름
Bean Factory와 Application Context
Bean Factory
- Bean을 등록, 생성, 조회, 반환 관리함
- 보통은 Bean Factory를 바로 사용하지 않고, 이를 확장한 Application Context를 사용함
- getBean() 메서드가 정의되어 있음
Application Context
- Bean을 등록, 생성, 조회, 반환 관리하는 기능은 Bean Factory와 같음
- Spring의 각종 부가 서비스를 추가로 제공함
- Spring이 제공하는 Application Context 구현 클래스가 여러 가지 종류가 있음
—> Bean Factory를 상속받아서 부가 서비스를 추가로 제공하는 것
Bean Factory와 Application Context의 전체적인 구조
'IT > Spring' 카테고리의 다른 글
Spring[6] - Layered Architecture & @Component (0) | 2022.06.28 |
---|---|
[Spring] 회원 관리(1) 비즈니스 요구사항 정리_백엔드 개발 (0) | 2022.06.27 |
[Spring] API (0) | 2022.06.26 |
Spring[4] - IoC (0) | 2022.06.26 |
Spring[3] - 메이븐 Spring Project 생성 (0) | 2022.06.23 |