Spring Framwork
의존성 주입
by orioncsy
2023. 3. 11.
의존성 주입
종류
생성자 주입
필드 주입
Setter 주입
- setter method를 활용해 의존성을 주입하는 방식
생성자 주입 권장
순환참조 방지
- setter 주입이나 필드 주입은 빈 객체를 생성 후 의존성을 주입하여 빈 객체 생성 시점에 순환 참조 발생 여부를 확인할 수 없다.
- 생성자 주입은 빈 객체를 생성하는 시점에 생성자 파라미터에 빈 객체를 찾아 주입한 뒤 빈 객체를 이용하여 생성한다.
- 애플리케이션 구동 시점에서 순환 참조를 검출할 수 있다.
Final 키워드 사용 가능
- 생성자 주입은 final 키워드를 사용할 수 있어 빈 객체 변경으로 인한 NPE를 예방 가능
애너테이션 활용 가능
- 생성자 주입은 애너테이션(@RequiredArgsConstructor)를 활용하여 주입 가능
테스트 코드 작성 용이
- 필드 주입의 경우 외부 접근이 안되기 때문에 순수 자바 코드로 작성한 단위 테스트 사용 불가
- 필드 주입의 경우 필드 주입한 필드는 spring 프레임워크에서 동작하지 않아 null이 된다.
- 생성자 주입의 경우 객체지향 OCP(Open Closed Principle) 원칙에 위배된다.
Reference
https://soobarkbar.tistory.com/230