[Spring]의존성 주입(Dependency Injection)

kjihye0340·2021년 5월 31일
0

spring

목록 보기
3/3

DI(Dependency Injection)

  • 의존성 주입
  • 객체를 직접 생성하는 게 아니라 외부에서 생성한 후 주입을 시켜주는 방식
  • 모듈 간의 결합도가 낮아지고 유연성이 높아진다

case 1 :
만약 User 클래스를 의존하는 클래스가 여러 개 있다고 했을 때,
의존하는 클래스를 User 클래스로부터 상속받는 하위 클래스 VIPUser로 의존하는 것으로 바꾼다고 해보자.
이 때, User 클래스를 의존하고 있던 여러 클래스의 소스코드들을 일일이 User에서 VIPUser로 바꿔야 할 것이다.
-> 의존 주입을 받을 경우, 이 여러 클래스들을 일일이 수정할 필요가 없다.

case 2 :
만약 Car 클래스와 Bus 클래스가 Wheel 클래스를 의존하고 있고, Car 객체와 Bus 객체의 필드 Wheel에 aWheel이 들어있을 때,
Wheel을 aWheel에서 bWheel로 바꾸기 위해서는 Car 클래스와 Bus 클래스의 내부를 수정해야 한다.
-> 의존 주입을 받을 경우, Car 클래스와 Bus 클래스의 내부를 일일이 수정할 필요가 없다.

스프링에서 의존성 주입

  1. 생성자에서 주입
//spring 4.3이상부터 생성자에 의존성 주입할  때
//@Autowired 생략가능(생성자가 하나일 경우)
public AObject(BObject obj){
    this.obj = obj;
}
  1. 필드에서 주입
@Autowired	//BOject가 bean으로 등록된 상태일때
private BObject obj;
  1. setter에서 주입
@Autowired
public void setObj(BObject obj){
    this.obj = obj;
}

출처
https://velog.io/@gillog/Spring-DIDependency-Injection
https://chanhuiseok.github.io/posts/spring-5/

0개의 댓글