생성자 주입을 선택해야 하는 이유
1. 불변
대부분의 DI는 한번 주입되면 애플리케이션 종료 시점까지 의존관계가 변하면 안 된다.(불변해야 한다)
수정자(setter) 주입은 set00 메소드를 public으로 열어두어야 한다. 그렇게 하면 의존관계를 누군가 변경할 수 있기 때문에 좋은 방법이 아니다.
생성자 주입은 객체를 생성할 때 딱 1번만 호출되고 이후에 호출되는 일이 없다. 따라서 불변하게 설계할 수 있다.
2. 누락
수정자 주입을 사용하면 의존관계가 누락되었을 때, 애플리케이션 실행은 가능하지만 실행 결과는 NPE가 뜨게 된다.
생성자 주입을 사용하면 같은 상황에서 컴파일 오류를 알려줌과 함께 인텔리제이가 어떤 의존관계를 필수로 주입해야 하는지 알려준다.
(생성자 주입 사용시 의존관계 누락되었을때) 컴파일 오류가 뜨고 주입되어야 하는 값을 인텔리제이가 친절하게 알려준다.
(정상적으로 수정되었을 때)
3. fianl 키워드 사용 가능
생성자 주입을 사용해야만 필드에 final 키워드(불변) 를 사용할 수 있기 때문에 값이 생성되지 않는 오류를 막아준다.
'Language > Spring Boot || Spring' 카테고리의 다른 글
스프링 빈 스코프 (1) | 2024.02.18 |
---|---|
Spring Boot에서 base64로 이미지 업로드,다운로드 기능 구현하기 (0) | 2024.02.17 |
Spring 빈의 생명주기와 생명주기 콜백에 대해 알아보자 (0) | 2024.02.15 |
Spring 의존관계 주입(DI) 방법 (0) | 2024.02.07 |
스프링부트 순환참조 문제 (0) | 2024.01.31 |