시작이 반

[Spring] 의존관계 주입 방법 본문

Programming/Spring

[Spring] 의존관계 주입 방법

G_Gi 2021. 5. 13. 23:59
SMALL

 @Autowired를 통한 의존관계 주입

  • 생성자 주입
  • 수정자 주입(setter 주입)
  • 필드 주입
  • 일반 메서드 주입

 

생성자 주입

- 생성자 호출시점에 1번만 호출되는 것이 보장

- 불변, 필수 의존관계에 사용

- 해당 class가 빈으로 등록되어 있고 생성자가 한개 있을때 @Autowired 생략 가능

@Component
public class MemberServiceImpl implements MemberService{

    private final MemberRepository memberRepository;

    @Autowired
    public MemberServiceImpl(MemberRepository memberRepository) {
        this.memberRepository = memberRepository;
    }

}

 

수정자 주입(setter 주입)

- 선택, 변경 가능성이 있는 의존 관계 사용

 

@Component
public class MemberServiceImpl implements MemberService{

    private MemberRepository memberRepository;

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

 

필드 주입

- 사용하지 않는 것이 좋음

- 외부에서 값을 넣을 방법이 없음

- setter가 필요해짐

@Component
public class MemberServiceImpl implements MemberService{
    
    @Autowired private MemberRepository memberRepository;

}

 

일반 메서드 주입

- 잘 사용안됨

@Component
public class MemberServiceImpl implements MemberService{
    
    private MemberRepository memberRepository;

    @Autowired
    public void init(MemberRepository memberRepository) {
        this.memberRepository = memberRepository;
    }
}
LIST