본문 바로가기
Spring(JAVA Framework)/Spring Core

Lombok 라이브러리

by 걸어가는 신사 2021. 8. 19.

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 함께 사용한다.

 

 

 


본 글은 김영한 님의 "스프링 핵심 원리"(인프런) 유료 강의를 들으며 요약, 정리하고 일부 정보를 추가 작성한 것입니다.

반응형

댓글