본문 바로가기

Spring

롬복

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