스프링의 의존 관계 주입 방법
- 생성자 주입
- 수정자 주입( Setter 주입 )
- 필드 주입
- 일반 메서드 주입
생성자 주입
- 생성자 호출 시점에 딱 1번만 호출되는 것 이 보장 된다.
- 불변, 필수 의존관계에서 사용이 된다.
@Component
public class AImpl implements A {
private final b: B
private final c: C
@Autowired
public aImpl(b: B, c: C) {}
}
수정자 주입
- setter라 불리는 필드의 값을 변경하는 수정자 메서드를 통해서 의존관계를 주입하는 방법이다.
- 선택, 변경 가능성이 있는 의존관계에 사용한다.
- 자바빈 프로퍼티 규약의 수정자 메서드 방식을 사용하는 방법이다.
@Component
public class AImpl implements A {
private b: B;
private c: C;
@Autowired
public setB(b: B) {
this.b = b;
}
@Autowired
public setC(c: C) {
this.c = c;
}
}
필드 주입
- 이름 그대로 필드에 바로 주입하는 방법이다.
- 코드가 간결해서 많은 개발자들을 유혹하지만 외부에서 변경이 불가능해서 테스트 하기 힘들자는 치명적인 단점이 있다.
- DI 프레임워크가 없으면 아무것도 할 수 없다.