1) 롬복(lombok)이란?
- 개발을 하면 대부분은 다 불변이고, 그래서 final 키워드를 주로 사용하게 됩니다.
그런데 생성자나 주입 받은 값을 대입하는 코드를 일일이 만들어야 해서 번거롭습니다.
이 때, 필드 주입처럼 편리하게 사용할 수 있는 방법이 있는데,
그것이 바로 롬복(lombok)입니다.
- 그렇다면 롬복을 적용하기 전과 후에 어떻게 코드가 바뀌는지
예시 코드를 통해 살펴보겠습니다.
[롬복을 적용하기 전]
@Component
public class OrderServiceImpl implements OrderService{
private final MemberRepository memberRepository;
private final DiscountPolicy discountPolicy;
public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy){
this.memberRepository = memberRepository;
this.discountPolicy = discountPolicy;
}
}
[롬복을 적용한 후]
@Component
@RequiredArgsConstructor
public class OrderServiceImpl implements OrderService{
private final MemberRepository memberRepository;
private final DiscountPolicy discountPolicy;
}
- 롬복 라이브러리가 제공하는 @RequiredArgsConstructor 기능을 사용하면
final이 붙은 필드를 모아서 생성자를 자동으로 만들어줍니다.
- 이외에도 @Getter, @Setter, @NoArgsConstructor, @AllArgsConstructor, @ToString, @NonNull 등의 애너테이션을 제공합니다.
2) 롬복 라이브러리 적용 방법
- 롬복 라이브러리는 build.gradle에 라이브러리 및 환경을 추가해서 사용할 수 있습니다.
plugins{
id 'org.springframework.book' version '2.3.2.RELEASE'
id 'io.spring.dependency-management' version '1.0.9.RELEASE'
id 'java'
}
group = 'hello'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
// lombok 설정 추가 시작
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
// lombok 설정 추가 끝
repositories {
mavenCentral()
}
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 라이브러리 추가 끝
testImplementation('org.springframework.boot:spring-boot-starter-test'){
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
}
test {
useJUnitPlatform()
}
참고
김영한 스프링 핵심 원리
'Spring' 카테고리의 다른 글
의존성 역전하기와 육각형 아키텍쳐 (0) | 2022.09.10 |
---|---|
롬복 어노테이션과 사용시 주의할 점 (0) | 2022.08.26 |
의존관계 자동 주입 (0) | 2022.08.21 |
컴포넌트 스캔 (0) | 2022.08.19 |
웹 서버와 WAS (0) | 2022.08.14 |