[Spring Web] lombok 라이브러리
Backend/Spring Basic

[Spring Web] lombok 라이브러리

lombok이 뭔가요?

lombok 라이브러리는 Getter, Setter, Constructor 등을 어노테이션 한 단어 만으로 주입시킬 수 있는 편리한 기능입니다.

어노테이션 프로세서를 사용하여 컴파일 타임에 자동으로 관련 코드를 생성시켜줍니다.

설치하고 적용시켜보자

intelliJ IDEA 기준입니다.

[ grable 빌드 툴을 이용해 추가하는 방법 ]

1. build.gradle 파일에 다음과 같이 문구를 추가합니다. 

plugins {
	id 'org.springframework.boot' version '2.7.1'
	id 'io.spring.dependency-management' version '1.0.11.RELEASE'
	id 'java'
}

group = 'hello'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'

repositories {
	mavenCentral()
}

//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 라이브러리 추가 끝

	testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

tasks.named('test') {
	useJUnitPlatform()
}

2. setting - plugin - lombok 검색 후 설치합니다. 이후 사진과 같이 Annotation Processors에 들어가서 활성화 시킵니다.

lombok
Annotation Processors

[ start.spring.io에서 dependency에 추가하는 방법 ]

 

지원하는 기능들

- @RequiredArgsConstructor

final 키워드를 가진 필드의 생성자를 자동으로 만들어주는 어노테이션입니다. 

예시1 - spring에서 bean을 자동주입하는 코드. @Autowired는 생성자가 1개일 때 생략 가능함.

@Component
public class OrderServiceImpl implements OrderService {

	private final memberRepository memberRepository;
	private final DiscountPolicy discountPolicy;
    
    @Autowired
    public OrderServiceImpl(hello.core.member.memberRepository memberRepository, DiscountPolicy discountPolicy) {
        this.memberRepository = memberRepository;
        this.discountPolicy = discountPolicy;
    }
    
    ...
 }

이전에는 spring framework에서 제공하는 @Autowired를 사용한 생성자 주입 코드를 직접 작정해야 했다면

lombok 라이브러리를 적용한 이후에는,

@Component
@RequiredArgsConstructor
public class OrderServiceImpl implements OrderService {

    private final memberRepository memberRepository;
    private final DiscountPolicy discountPolicy;
    
    ...
}

다음과 같이 @RequiredArgsConstructor만 사용하여 해결할 수 있습니다.

출처

이 자료의 코드는 대부분 "스프링 핵심 원리 - 기본편"를 인용했습니다.

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8/dashboard

 

스프링 핵심 원리 - 기본편 - 인프런 | 강의

스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., - 강의 소개 | 인프런...

www.inflearn.com