1. Lombok 이란?
어노테이션 기반으로 코드를 자동완성 해주는 라이브러리
- Lombok을 이용하면 Getter, Setter, Equals, ToString 등의 코드를 자동완성 시킬 수 있다.
- Lombok의 장점
- 어노테이션 기반의 코드 자동 생성을 통한 생산성 향상
- 반복되는 코드 다이어트를 통한 가독성 및 유지보수성 향상
2. Lombok 라이브러리 적용 방법(springboot 기반)
build.gradle에 라이브러리 및 환경 추가
plugins {
id 'org.springframework.boot' version '2.5.3'
id 'io.spring.dependency-management' version '1.0.11.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'
implementation 'javax.inject:javax.inject:1'
//web 라이브러리 추가
implementation 'org.springframework.boot:spring-boot-starter-web'
//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'
}
test {
useJUnitPlatform()
}
3. Lombok 적용
기존 코드
@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;
}
}
lombok 적용 후 코드
@Component
@RequiredArgsConstructor
public class OrderServiceImpl implements OrderService {
private final MemberRepository memberRepository;
private final DiscountPolicy discountPolicy;
}
- @RequiredArgsConstructor 기능을 사용하면 final이 붙은 필드를 모아서 생성자를 자동으로 만들어준다.
- lombok이 자바의 어노테이션 프로세서라는 기능을 이용해서 컴파일 시점에 생성자 코드를 자동으로 생성해준다.
정리
- 생성자를 1개만 두고 @Autowired를 생략
- Lombok 라이브러리의 @RequiredArgsConstructor 함께 사용한다.
본 글은 김영한 님의 "스프링 핵심 원리"(인프런) 유료 강의를 들으며 요약, 정리하고 일부 정보를 추가 작성한 것입니다.
반응형
'Spring(JAVA Framework) > Spring Core' 카테고리의 다른 글
빈(Bean) 생명 주기 콜백 (0) | 2021.08.19 |
---|---|
조회한 모든 빈이 가져오기 (List, Map) (0) | 2021.08.19 |
@ Autowired 사용시 조회 빈이 중복되는 경우 (0) | 2021.08.19 |
의존관계 자동 주입 방법 (0) | 2021.08.19 |
컴포넌트 스캔 (Component Scan) (0) | 2021.08.18 |
댓글