스프링에서 필드 주입 방식(Field Injection)보다
생성자 주입 방식(Constructor Injection)을 권장하는 이유 를 알아보자
1) 의존성 주입 시점이 명확하다
생성자 주입 방식은 객체를 생성할 때 필요한 모든 의존성을
생성자 파라미터로 전달받아 객체를 생성한다
이렇게 객체 생성 시점에 모든 의존성을 주입하기 때문에
객체가 완전히 생성되기 전에 모든 의존성이 주입된 상태가 된다
하지만 필드 주입 방식은 객체 생성 후에 주입되기 때문에
객체가 완전히 생성된 이후에 의존성이 주입되므로
객체 생성 후에도 의존성이 부족한 상태로 사용될 가능성이 있다
2) 코드의 가독성이 높다
생성자 주입 방식은 생성자 파라미터에 의존성을 명시하므로 코드의 가독성이 높아진다
또한, 생성자를 호출할 때 필요한 의존성을 쉽게 파악할 수 있다
반면, 필드 주입 방식은 의존성을 명시적으로 표시하지 않기 때문에
코드의 가독성이 떨어질 수 있다
3) 객체의 불변성을 보장한다
생성자 주입 방식을 사용하면 객체가 생성될 때 필요한 모든 의존성을 전달받기 때문에
객체를 불변(immutable)하게 만들 수 있다
즉, 객체가 생성된 이후에는 의존성이 변경될 일이 없다
이는 객체의 안정성을 높여주고, 디버깅이나 테스트 작업을 용이하게 만들어 준다
4) 테스트하기 쉽다
생성자 주입 방식은 테스트 코드에서도 쉽게 사용할 수 있다
테스트 코드에서는 의존성을 목(Mock) 객체로 대체하여 테스트할 수 있다
반면, 필드 주입 방식은 객체 생성 후에 의존성이 주입되기 때문에
테스트 코드에서 의존성을 대체하기 어려울 수 있다
따라서 스프링에서는 주로 생성자 주입 방식을 권장하며
필드 주입보다는 생성자 주입 방식을 사용하는 것이 좋다
'Spring' 카테고리의 다른 글
[Spring] JSON 과 GSON (0) | 2023.06.14 |
---|---|
[DataBase] JPA의 내부 구조와 동작 원리 (0) | 2023.04.29 |
[Spring] Spring 과 SpringBoot의 차이 (0) | 2023.04.06 |
[Spring] SpringFramwork 구조 및 동작순서 (0) | 2023.02.22 |
[Spring] QueryDSL 메서드 및 활용 예시 모아보기(3) (0) | 2022.11.14 |