Spring - 생성자 의존성 주입과 수정자 의존성 주입

 

의존성 주입의 여러가지 방법에 대해

의존성 주입 (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();
	}
}