JAVA/스프링
다양한 의존관계 주입 방법
수염차
2022. 3. 10. 11:18
생성자 주입
-생성자 호출시점에 딱 1번만 호출되는 것이 보장
-불변, 필수 의존관계에 사용
수정자 주입
-setter 메서드를 통해 의존관계 주입
-선택, 변경 가능성이 있는 의존관계에서 사용
private MemberRepository memberRepository;
private DiscountPolicy discountPolicy;
@Autowired
public void setMemberRepository(MemberRepository memberRepository) {
this.memberRepository = memberRepository;
}
@Autowired
public void setDiscountPolicy(DiscountPolicy discountPolicy) {
this.discountPolicy = discountPolicy;
}
필드 주입
-외부에서 변경이 불가능하여 테스트하기 어려움
-DI 프레임워크가 없으면 아무것도 할 수 없음
@Autowired private MemberRepository memberRepository;
@Autowired private DiscountPolicy discountPolicy;
일반 메서드 주입
-일반 메서드를 통해서 주입 받기 가능
-한 번에 여러 필드를 주입 받을 수 있음
* 생성자 주입을 제외한 나머지 주입 방식은 모두 생성자 이훼 호출되므로 필드에 final 키워드 사용 불가
롬복 사용
-@RequiredArgsConstructor를 사용하면 final이 붙은 필드를 모아서 생성자를 자동으로 만들어줌
@Component
@RequiredArgsConstructor
public class OrderServiceImpl implements OrderService {
private final MemberRepository memberRepository ;
private final DiscountPolicy discountPolicy;
}
출처
인프런 스프링 핵심원리- 기본편