본문 바로가기

Spring/Spring

[Spring] 의존관계 주입 방법

반응형

1. 생성자를 이용한 주입

  • 생성자 호출시점에 1번만 호출됨
  • 불변, 필수 의존관계에 사용
@Component
public class OrderServiceImpl implements OrderService{

    private final MemberRepository memberRepository;
    private final DiscountPolicy discountPolicy;

    @Autowired
    public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) {
        this.memberRepository = memberRepository;
        this.discountPolicy = discountPolicy;
    }

 

 

2. 수정자 주입(setter 주입)

  • 선택, 변경 가능성이 있는 의존관계에 사용
@Component
public class OrderServiceImpl implements OrderService{

    private MemberRepository memberRepository;
    private  DiscountPolicy discountPolicy;

    @Autowired
    public void setDiscountPolicy(DiscountPolicy discountPolicy) {
        this.discountPolicy = discountPolicy;
    }
    
    @Autowired
    public void setMemberRepository(MemberRepository memberRepository) {
        this.memberRepository = memberRepository;
    }

 

 

3.  필드 주입

  • 코드가 간결하지만 외부에서 변경이 불가능해서 테스트 하기 힘들다
  • DI 프레임워크가 없으면 아무것도 할 수 없다
  • 사용 XX
@Component
public class OrderServiceImpl implements OrderService{

    
    @Autowired private MemberRepository memberRepository;
    @Autowired private DiscountPolicy discountPolicy;
    

 

4. 일반 메서드 주입

  • 한 번에 여러 필드를 주입 받을 수 있다
  • 일반적으로 사용 XX

 

@Component
public class OrderServiceImpl implements OrderService{
    
    private  MemberRepository memberRepository;
    private  DiscountPolicy discountPolicy;
    
    @Autowired
    public void init(MemberRepository memberRepository, DiscountPolicy discountPolicy) {
        this.memberRepository = memberRepository;
        this.discountPolicy = discountPolicy;
    }

 

 

앵간해서는 1번 생성자를 이용한 주입을 많이 사용하니 생성자를 이용한 주입을 잘 이용하자!

 

출처 : 인프런 - 스프링 핵심원리 (기본편)

반응형