개발 기록
다양한 의존관계 주입 방법 본문
생성자 주입
-생성자 호출시점에 딱 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