카테고리 없음

김영한 스프링7 생성자 주입을 선택하자

ernest45 2024. 1. 1. 20:43

 

그 이유는

1.  불변

 

의존관계 주입은 애플리케이션이 조립될 때 이미 다 정해지는 게 좋고, 웬만하면 변할 일도 없고, 변하면 안좋은 경우가 더 많기에

생성자를 주입을 이용 하는 게 좀 더 깔끔하다.

 

2.  누락 

 

 

순수한 자바 코드로 테스트 하고 싶어서

의존관계 주입을 Setter로 했을 때 NPE가 뜬다.

왜냐하면 실제 코드가 memberRepo와  discountPolicy를 필요로 하고 있기에 실제로 까봐야 알고 직접 설정을 해줘야 하는데

컴파일 시점에선 알 수가 없다. 

but

 

 

setter 주입이 아닌, 생성자 주입으로 바꿨을 때

애초에 컴파일에러로 넣어달라고 말해준다. IDE가 알려줘서 편하다

 

테스트의 과정이니까

 

임의로 넣어줄 수 있다.

 

 

실제로 스프링 없이 순수하게 자바 코드로 테스트할 경우에 유용하다 !

 

마지막으로

 

final 키워드 사용 가능

 

생성자에서만 넣을 수 있고 값이 바뀔 수 없기 때문이고,

final 키워드로 초기화단계에서 값이 안 들어왔을때도 안 들어왔다고 컴파일 단계에서 알려준다 !

 

 

 

 

 

따라서 여러 이유들로 인해 생성자 주입을 사용하자 !

필요에 따라 수정자 주입을 선택하자!