Notice
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
01-10 04:46
Today
Total
관리 메뉴

그날그날 공부기록

스프링의 의존관계 주입 방법 2 본문

Spring 공부

스프링의 의존관계 주입 방법 2

given_dragon 2022. 7. 27. 17:30
 

스프링의 의존관계 주입 방법

의존관계는 다양한 방식으로 주입받을 수 있다. 생성자 주입 setter(수정자) 주입 필드 주입 일반 메서드 주입 생성자 주입 생성자를 통해 의존관계를 주입받는다. 생성자는 1번만 호출된다. → 의

givendragon.tistory.com

저번 글에 이어서 작성.


필드 주입

  • 필드에 @Autowired를 붙여 주입한다.
  • 코드가 간결해지지만 외부에서 변경이 불가하다. → 테스트하기 힘들다.
  • 스프링(DI 프레임워크)이 없다면 작동하지 않는다.
  • 이러한 이유들 때문에 기피되는 방식이라고 한다. 왠만하면 사용하지 말자.
    (스프링 설정을 목적으로 하는 파일에서는 사용되기도 함)
@Component
public class OrderServiceImpl implements OrderService{

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

일반 메서드 주입

  • 일반적인 메서드에 @Autowired을 붙여 주입한다.

-setter주입과 별 차이는 없는듯 하다. 개인적인 생각이지만 웬만하면 setter를 사용하는 게 형식도 지키고 좋지 않을까?

@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;
    }
}

이러한 주입 방식들은 스프링 빈에 OrderServiceImpl이 등록되어 있기 때문이다.

일반 클래스라면 @Autowired를 작성해도 자동 주입이 되지 않는다.

Comments