DI 의존성주입의 종류는 3가지 이다.
1. 필드 인젝트
2. 생성자 인젝트
3. 세터 인젝트
여기서 DI를 지난 시간에 배운 전략패턴과 연관지어 생각해 보자.
지난 시간에 나는 전략패턴의 용도는 합성을 이용하여 런타임중에도 원하는 기능을 주입하여
변경이 가능하도록 하기 위해서 사용한다고 했다.
DI 세종류를 살펴보자.
DI에서 필드 인젝트와 생성자 인젝트는 런타임시에 변경할 수 없다.
세터 인젝트만 런타임시에 변경이 가능하다.
따라서 필드 인젝트와 생성자 인젝트도 전략패턴이냐? "아니다."
"세터 인젝트만 전략패턴이다."라고 말할 수 있는 것이다.
세터가 전략패턴이라고 단정 지을 순 없고, 용도에 따라서만 말할 수 있다.
이제 DI와 전략패턴의 차이점이 보인다.
그 차이점은 역시 용도와 밀접하다.
DI와 전략패턴의 구조는 거의 같다 하지만 "용도가 다르다".
정리!
DI는 전략패턴의 구조를 흉내냈지만 단지 코드의 중복을 줄이기 위한 용도로 스프링에서 사용된다.
반면 전략패턴은 런타임에서 원하는 기능으로 변경이 가능하도록 하기위해서 사용된다.
이것이 바로 디자인패턴을 학습할때, 용도의 측면에서 바라보라는 조언을 듣는 진정한 이유였던 것이다!
'Junior 사내스터디' 카테고리의 다른 글
스프링부트에서 JdbcTemplate를 직접 사용하여 RestAPI구현하기 (0) | 2019.11.13 |
---|---|
DBMS에서 데이버베이스란 용어와 스키마라는 용어 (0) | 2019.11.08 |
간략히 REST API는 무엇인가요(어떤 메소드가 있나요)? (0) | 2019.11.08 |
전략패턴 (0) | 2019.11.06 |
도커 (0) | 2019.11.06 |
댓글