의존성 주입 (Dependency Injection, DI)
생성자 의존성 주입
- 컴포넌트의 생성자(또는 여러 생성자)를 통해 컴포넌트가 필요로 하는 의존성을 주입받는 방법
- 컨테이너는 컴포넌트 초기화 시 컴포넌트가 필요로 하는 의존성을 전달함
- 생성자 주입을 할 경우 의존성 주입 없이는 빈을 생성할 수 없으므로 반드시 의존성을 주입해야 한다.
public class ConstructorInjection {
private Dependency dependency;
public ConstructorInjection (Dependency dependency) {
this.dependency = dependency;
}
@Override
public String toString () {
return dependency.toString();
}
}
수정자 의존성 주입
- 수정자(setter)를 통해 의존성을 주입하는 방식
- 의존성을 파라미터로 받는 수정자를 만듦
- 의존성이 없어도 객체 생성이 가능하며 의존성을 나중에 제공할 수도 있음
- 수정자 이름은 의존성을 참조하는 이름으로 만들어야 함
- 가장 널리 사용되며 구현하기도 쉬움
public class SetterInjection {
private Dependency dependency;
public setDependency (Dependency dependency) {
this.dependency = dependency;
}
@Override
public String toString () {
return dependency.toString();
}
}