카테고리 없음
김영한 스프링7 생성자 주입을 선택하자
ernest45
2024. 1. 1. 20:43
그 이유는
1. 불변
의존관계 주입은 애플리케이션이 조립될 때 이미 다 정해지는 게 좋고, 웬만하면 변할 일도 없고, 변하면 안좋은 경우가 더 많기에
생성자를 주입을 이용 하는 게 좀 더 깔끔하다.
2. 누락
순수한 자바 코드로 테스트 하고 싶어서
의존관계 주입을 Setter로 했을 때 NPE가 뜬다.
왜냐하면 실제 코드가 memberRepo와 discountPolicy를 필요로 하고 있기에 실제로 까봐야 알고 직접 설정을 해줘야 하는데
컴파일 시점에선 알 수가 없다.
but
setter 주입이 아닌, 생성자 주입으로 바꿨을 때
애초에 컴파일에러로 넣어달라고 말해준다. IDE가 알려줘서 편하다
테스트의 과정이니까
임의로 넣어줄 수 있다.
실제로 스프링 없이 순수하게 자바 코드로 테스트할 경우에 유용하다 !
마지막으로
final 키워드 사용 가능
생성자에서만 넣을 수 있고 값이 바뀔 수 없기 때문이고,
final 키워드로 초기화단계에서 값이 안 들어왔을때도 안 들어왔다고 컴파일 단계에서 알려준다 !
따라서 여러 이유들로 인해 생성자 주입을 사용하자 !
필요에 따라 수정자 주입을 선택하자!