DI의 방식에는 3가지 방식이 있다.
생성자 주입(Constructor Injection) 방식은 생성자를 통해 의존관계를 주입하는 방법이다.
생성자 주입 방식은 객체가 불변하거나, 객체 주입이 필요한 경우 강제하기 위해 사용할 수 있다.
생성자가 1개만 있는 경우 @Autowired를 생략해도 된다.
@Service
publice class House {
private PC pc;
private TV tv;
@Autowired
public House(TV tv, PC pc) {
this.PC = pc;
this.TV = tv;................................
}
}
세터 주입 방식은 주입받는 객체가 변경 될 가능성이 있는 경우 사용한다.
@Service
public class House {
private PC pc;
private TV tv;
@Autowired
public void setPC(PC pc) {
this.pc = pc;
}
@Autowired
public void setTV(TV tv) {
this.tv tv;
}
}
필드 주입 방식은 필드에 바로 의존 관계를 주입하는 방법이다.
외부에서 접근이 불가능해진다.
또한 DI프레임 워크가 반드시 존재해야 한다.
@Service
public class House {
@Autowired
private Pc pc;
@Autowired
prvate TV tv;
}