728x90
생성자 주입을 하게 되면 필드에 fnal 키워드를 사용하고, 생성자 만들고 주입받을 값을 대입하는 코드를 만들어야한다.
@Component
public class OrderServiceImpl implements OrderService {
private final MemberRepository memberRepository;
private final DiscountPolicy discountPolicy;
@Autowired
public OrderServiceImpl(MemberRepository memberRepository, @MainDiscountPolicy DiscountPolicy discountPolicy) {
this.memberRepository = memberRepository;
this.discountPolicy = discountPolicy;
}
}
롬복 적용
롬복 라이브러리가 제공하는 @RequiredArgsConstructor 기능을 사용하면 final이 붙은 필드를 모아서 생성자를 자동으로 만들어준다
@Component
@RequiredArgsConstructor
public class OrderServiceImpl implements OrderService {
private final MemberRepository memberRepository;
private final DiscountPolicy discountPolicy;
}
이 코드와 생성자 주입 코드는 완전히 동일하다
롬복이 자바의 애노테이션 프로세서라는 기능을 이용 해서 컴파일 시점에 생성자 코드를 자동으로 생성해준다
롬복 라이브러리 적용 방법
build.gradle 에 라이브러리 및 환경 추가
//lombok 설정 추가 시작
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
//lombok 설정 추가 끝
dependencies {
implementation 'org.springframework.boot:spring-boot-starter'
//lombok 라이브러리 추가 시작
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
testCompileOnly 'org.projectlombok:lombok'
testAnnotationProcessor 'org.projectlombok:lombok'
//lombok 라이브러리 추가 끝
}
728x90
'Spring > Spring 핵심 원리' 카테고리의 다른 글
조회한 빈이 모두 필요할 때 List, Map (0) | 2023.09.17 |
---|---|
의존관계 주입 - 조회 빈이 2개 이상 (0) | 2023.09.17 |
의존관계 자동 주입 (0) | 2023.09.17 |
싱글톤 컨테이너 (0) | 2023.09.16 |
스프링 컨테이너와 스프링 빈 (0) | 2023.09.16 |