다양한 의존관계 주입 방법
- 생성자 주입
- 수정자 주입(setter 주입)
- 필드 주입
- 일반 메서드 주입
생성자 주입
지금까지 우리가 진행했던 방식!
- 특징
- 생성자 호출 시점에 딱 1번만 호출되는 것이 보장된다.
- ”불변, 필수” 의존관계에 사용
바꿀 예정이 있으면 이런식으로 하면 안된다.
수정자 주입(setter 주입)
- 특징
- ”선택, 변경” 가능성이 있는 의존 관계에서 사용
- 자바빈 프로퍼티 규약의 수정자 메서드 방식을 사용하는 방법이다.
private MemberRepository memberRepository;
private DiscountPolicy discountPolicy;
@Autowired
public void setMemberRepository(MemberRepository memberRepository) {
System.out.println("memberRepository = " + memberRepository);
this.memberRepository = memberRepository;
}
@Autowired
public void setDiscountPolicy(DiscountPolicy discountPolicy) {
System.out.println("discountPolicy = " + discountPolicy);
this.discountPolicy = discountPolicy;
}
필드 주입
- 특징
- 코드가 간결해서 개발자들을 유혹하지만 외부에서 변경이 불가능해서 테스트하기 힘들다는 치명적인 단점이 있다.
- DH 프레임워크가 없으면 아무것도 할 수 없다.
- 사용하지 말자!
- 애플리케이션의 실제 코드와 관계없는 테스트 코드
- 스프링 설정을 목적으로 하는 @Configuration 같은 곳에서만 특별한 용도로 사용
일반 메서드 주입
- 특징
- 한번에 여러 필드를 주입 받을 수 있다.
- 일반적으로 잘 사용하지 않는다.
'Backend > Spring' 카테고리의 다른 글
[섹션 7] 생성자 주입을 선택해라 (0) | 2024.03.18 |
---|---|
[섹션 7] 옵션 처리 (0) | 2024.03.18 |
[섹션 6]컴포넌트 스캔 (0) | 2024.03.18 |
[섹션 5] @Configuation과 싱글톤 (0) | 2024.03.18 |
[섹션 4] 스프링 빈 설정 메타 정보 - BeanDefinition (0) | 2024.03.18 |