[inflearn] 스프링 핵심 원리 - 기본편/섹션 7 - 의존관계 자동 주입
7-4. 롬복 라이브러리
슬픈 야옹이
2024. 5. 26. 19:52
빈의 구성 방식은 대부분 비슷하기 때문에, 생성자 작성과 의존성 주입 코드 작성은 생각보다 반복적인 작업이다.
롬복 라이브러리를 이용하면 이러한 작업을 간편하게 수행할 수 있다.
롬복 적용 방법 (IntelliJ IDEA 기준)
build.gradle에 라이브러리와 환경 설정을 추가한다.
plugins {
...
}
group = 'hdxian'
version = '0.0.1-SNAPSHOT'
java {
...
}
// lombok 설정 추가 (시작)
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
// lombok 설정 추가 (끝)
repositories {
...
}
dependencies {
...
// lombok 라이브러리 추가 (시작)
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
testCompileOnly 'org.projectlombok:lombok'
testAnnotationProcessor 'org.projectlombok:lombok'
// lombok 라이브러리 추가 (끝)
...
}
tasks.named('test') {
...
}
[File] -> [settings] -> [Plugins]에서 lombok을 설치 및 추가한다.
[File] -> [settings] -> [Build, Execution, Deployment] -> [Annotation Processors]로 이동하여
"Enable annotation processing" 을 체크한다.
@RequiredArgsConstructor
롬복 라이브러리를 이용하면 생성자 주입 방식을 간편하게 적용할 수 있다.
기존 코드가 다음과 같을 때,
@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;
}
}
클래스 선언부에 @RequiredArgConstructor를 붙이면 생성자를 생략할 수 있다.
@Component
@RequiredArgsConstructor
public class OrderServiceImpl implements OrderService {
private final MemberRepository memberRepository;
private final DiscountPolicy discountPolicy;
}
@RequiredArgConstructor는 final 키워드가 붙은 필드들을 파라미터로 받는 생성자를 자동으로 생성해주는데,
생성자가 유일하면 @Autowired를 생략 가능하므로 생성자 주입 방식을 간편하게 적용할 수 있다.
그 외에도 @Getter,@Setter를 클래스 선언부에 붙이면 getter, setter 메서드를 자동으로 붙여주어 코드 작성을 생략할 수 있다.