01.Object Dependencies(객체 의존성)
현재 객체가 다른 객체와 상호작용을 하고 있다면 객체는 다른 객체에 의존성을 가진다.
public class PetOwner{
private AnimalType animal;
public PetOwner() {
this.animal = new Dog();
}
}
https://gmlwjd9405.github.io/2018/11/09/dependency-injection.html
- PetOwner 객체는 AnimalTpte 객체(Dog)에 의존한다.
02.Dependency Injection
객체가 자체가 아니라 Framework 에 의해 객체의 의존성이 주입되는 설계 패턴
- Framework 에 의해 동적으로 주입되므로 여러 객체간의 결합이 줄어든다.
- Dependency Injection 은 Spring Framework에서 지원하는 IoC 형태 ( Inversion of Control)
- 위 그림과 같이 Container 가 Bean 객체를 생성하고 종속성을 주입한다.
- Dependency Injection 과 Inversion Of Control 은 같은 의미로 사용된다.
- IoC : 프로그램 제어권을 framework 가 가져가는 것
- 개발자가 모든 제어의 중심이나, 코드 전체에 대한 제어는 framework 가 한다.
- 개발자 설성(xml,annotation) 을 하면 Container 가 알아서 처리한다.
- 즉, 우리는 Framework 속에서 프로그랭 하느 것
의존성 주입의 방법
01.Contructor Injection <constructor-arg ref="cat"></constructor-arg>
02.Method(Setter) Injection setter()를 통한 전달 , <property name="myName" value="poodle"></property>
03.Field Injection 멤버변수를 통한 전달
장점
1. 종속성이 감소하면서 변경에 민감하지 않다.
2. 재사용성의 증가 - 일부 인터페이스의 다른 구현 필요시, 코드 변경없이 components 를 구성
3. 더 많은 테스트 코드를 만들 수 있다.
4. 코드읽기가 쉬워진다.
'Spring Framework' 카테고리의 다른 글
Spring Framework 실행 순서 (0) | 2022.01.03 |
---|---|
Connection Pool ? (0) | 2021.12.30 |