1. 의존성 주입 개요
- 의존성 주입(Dependency Injection, DI)은 스프링 프레임워크의 핵심 기능 중 하나입니다.
- 객체 간의 결합도를 낮추고 코드의 재사용성과 테스트 용이성을 높이는 기법입니다.
- 스프링에서는 다양한 방식으로 의존성을 주입할 수 있으며, 각 방식에는 고유한 특징과 장단점이 있습니다.
- 의존성 주입 방법에는 크게 생성자 주입, 수정자 주입, 필드 주입, 일반 메서드 주입이 있습니다.
1.1 의존성 주입(DI)이란?
- 의존성 주입(DI)은 객체가 자신이 필요로 하는 다른 객체들(의존성)을 다음 세 가지 방법으로만 정의하는 과정입니다
- 생성자 매개변수를 통해
- 팩토리 메서드의 매개변수를 통해
- 객체가 생성되거나 팩토리 메서드에서 반환된 후에 설정되는 속성을 통해
- 컨테이너는 빈(Bean)을 생성할 때 이러한 의존성들을 주입합니다.
2. 생성자 주입(Constructor Injection)
- 생성자를 통해 의존 객체를 주입받는 방법입니다.
- 객체가 생성될 때 의존성이 주입되므로 불변, 필수 의존관계에 적합합니다.
- 스프링 4.3부터는 생성자가 단 하나만 있는 경우
@Autowired애노테이션을 생략해도 자동으로 주입됩니다.- 단, 해당 클래스가 스프링 빈으로 등록된 경우에만 해당됩니다.
- 생성자가 2개 이상인 경우에는 생성자에 어노테이션을 붙여주어야 합니다.
정보
생성자 주입은 객체 생성 시점에 딱 한 번만 호출되므로 불변성을 보장합니다.