생성자 주입
생성자 호출시점에 딱 1번만 호출
불변, 필수 의존관계에 사용
생성자가 딱 1개만 있으면 @Autowired 생략 가능 (스프링 빈에만 해당)
수정자 주입(Setter 주입)
setter라 불리는 필드 값을 변경하는 수정자 메서드를 통해 의존관계 주입
선택, 변경 가능성 의존관계에 사용
자바빈 프로퍼티 규약의 수정자 메서드 방식
필드 주입
코드가 간결, 하지만 외부에서 변경 불가
>> 테스트 어려움
DI 프레임워크 필수
사용하지 말자
>> 애플리케이션의 실제 코드와 관계 없는 테스트 코드
>> 스프링 설정을 목적으로 하는 @Configuration 같은 곳에서만 특별한 용도로 사용
일반 메서드 주입
한번에 여러 필드 주입
일반적으로 사용 x
옵션 처리
@Autowired의 기본 동작은 주입할 대상이 없으면 오류 발생
@Autowired(required=false) : 자동 주입 대상이 없으면 수정자 메서드 자체가 호출 x
org.springframework.lang.@Nullable : 자동 주입 대상이 없으면 null 입력됨
Optional<> : 자동 주입 대상 없으면 Optional.empty 입력됨
롬복 라이브러리
롬복 라이브러리가 제공하는 @RequiredArgsConstructor 기능을 사용
>> final이 붙은 필드를 모아 생성자를 자동으로 만들어줌
롬복이 자바의 애노테이션 프로세서라는 기능 이용
>> 컴파일 시점에 생성자 코드를 자동으로 생성
최근에는 생성자를 딱 1개 두고 @Autowired를 생략하는 방법 주로 사용
>> 여기에 Lombok 라이브러리의 기능을 사용해서 코드를 깔끔하게 사용
조회 대상 빈이 2개 이상
@Autowired 필드명 매칭
@Autowired는 타입 매칭을 시도하고
>> 여러 빈이 있으면 필드 이름, 파라미터 이름으로 빈 이름을 추가 매칭
필드 명을 빈 이름으로 변경
@Qualifier 사용
추가 구분자를 붙여줌
주입 시 @Qualifier를 붙여주고 등록한 이름 적어줌
@Primary 사용
우선순위 정함
출처 : 김영한, 스프링 핵심 원리 - 기본편
'Spring' 카테고리의 다른 글
MVC / 웹 애플리케이션 이해 (0) | 2025.03.31 |
---|---|
Spring / 빈 스코프 (0) | 2025.03.29 |
Spring / 컴포넌트 스캔 (0) | 2025.03.24 |
Spring / 싱글톤 컨테이너 (0) | 2025.03.23 |
Spring / 스프링 컨테이너와 빈 (0) | 2025.03.23 |