Spring DI / DL 차이

박종훈·2023년 2월 28일
0

DL

클라이언트가 컨테이너에 Bean을 직접 조회 한다.

  • 참고) 프로토타입빈을 Provider를 통해 조회하게 되면(DL) 컨테이너에서 객체를 생성 후 반환해준다.

DI

컨테이너가 의존성을 주입한다.

  • 수동 Bean 등록
  • @Autowired 사용

DL, DI의 차이가 조금 헷갈린다.
명확하게 어떤 차이가 있는지 와닿지가 않는 것 같다.
글로 정리하면서 생각해보려 한다.

DI - @Autowired

Bean 수동등록에서 부터 차근차근 생각해보면,
@Configuration에서 Constructor / Setter 를 통해 의존관계를 설정하는 것은 분명히 DI라는 것이 이해가 된다.

그럼 조금 와닿지 않는 @Autowired에서 생각해보자.

Bean 수동등록을 편하게 해주기 위해 @ComponentScan이 나오게 되었다. @ComponentScan을 사용할 때 의존관계를 주입해주기 위한 방법으로 @Autowired가 나온 것이다.
당연히 그러면 @Autowired 도 DI 가 맞다!

이렇게 생각하니 DI 와 DL의 차이점이 분명하게 느껴진다.

0개의 댓글