개발 기록

다양한 의존관계 주입 방법 본문

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

 

출처

인프런 스프링 핵심원리- 기본편

'JAVA > 스프링' 카테고리의 다른 글

스프링 빈 라이프 사이클  (0) 2022.03.14
조회한 빈이 모두 필요할 때, List, Map  (0) 2022.03.10
싱글톤  (0) 2022.03.07
스프링 빈  (0) 2022.03.03
스프링 컨테이너  (0) 2022.03.02
Comments