Framework/Spring Boot

lombok 사용

잔망루피 2021. 1. 23. 20:06

lombok을 의존성에 추가하는 방법은 2가지다. 참고 👉  https://projectlombok.org/setup/gradle

1. plugin

plugins {
  id "io.freefair.lombok" version "6.6.1"
}

 

2. 컴파일 중에만 lombok을 추가하도록 compileOnly scope 사용

repositories {
	mavenCentral()
}

dependencies {
	compileOnly 'org.projectlombok:lombok:1.18.24'
	annotationProcessor 'org.projectlombok:lombok:1.18.24'
	
	testCompileOnly 'org.projectlombok:lombok:1.18.24'
	testAnnotationProcessor 'org.projectlombok:lombok:1.18.24'
}

build.gradle에 추가.

초기에 프로젝트 생성할 때 springboot 사이트에 lombok있음.

 

 

🧶 설치하기

Prefrences(윈도우 File Settings) plugin lombok 검색 설치 실행 (재시작) 2. Prefrences Annotation Processors 검색 Enable annotation processing 체크 (재시작)

 

@Component
@RequiredArgsConstructor
public class OrderServiceImpl implements OrderService {
 private final MemberRepository memberRepository;
 private final DiscountPolicy discountPolicy;
}

 

@RequiredArgsConstructorfinal이 붙은 필드를 모아서 생성자를 자동으로 만들어준다.

 

최근에는 생성자를 딱 1개 두고, @Autowired를 생략하는 방법을 주로 사용. 여기에 Lombok라이브러리의 @RequiredArgsConstructor와 함께 사용하면 깔끔한 코드 작성

 

 

🍟 lombok의 어노테이션

@Getter getter 생성
@Setter setter 생성
@NoArgsConstructor 기본 생성자 추가
@AllArgsConstructor 모든 매개변수를 넣은 생성자 추가
@RequiredArgsConstructor final 또는 @NonNull인 필드 값만 파라미터로 받는 생성자 추가
@ToString toString 함수 오버라이딩
{className}{field1=value, field2=value, ...) 형태
@ToString(exclude="변수명")로 제외할 변수 설정할 수 있다.
@EqualsAndHashCode 객체의 hashcode에 대한 오버라이딩
@Data 모든 요소(@Getter, @Setter, @ToString, @EqualsAndHashCode, @RequiredArgsConstructor 등)를 자동 생성
무분별한 사용x
@NonNull 변수 위에 붙이고, null이 허용되지 않음
@Builder Builder pattern(생성자에 들어갈 매개 변수의 순서를 신경쓰지 않고, 모든 매개 변수를 받은 후 통합해서 한번에 사용)을 사용하는데 유용함

 

🎨 클래스에 @Builder 붙이는 것과 생성자에 붙이는 것의 차이?

생성자를 직접 만들고 @Builder을 붙이는 게 낫다.

클래스에 @Builder을 붙이면 파라미터 순서로 설정하고, 생성자에 붙이면 파라미터명으로 설정된다.

@Builder
public Post(String title, String content, String author, int view){
    this.title=title;
    this.content=content;
    this.author=author;
    this.view=view;
}

Post 엔티티에서 생성자에 @Builder을 붙였다.

id는 데이터베이스에서 auto increment되니까 파라미터로 주지 않았다.

 

 

 

참고 👇

https://wiserloner.tistory.com/152

 

Lombok 정리

lombok이란, java web 프로그래밍에서 DTO 혹은 Vo라고도 하는 객체 사용을 해봤다면 반복적으로 사용되는 코드인 getter, setter 코드를 봤을 것이다. lombok은 그 getter와 setter뿐 아니라 DTO에 필요한 여러..

wiserloner.tistory.com

 

https://hochoon-dev.tistory.com/entry/Java-Lombok-%EC%A0%95%EB%A6%AC

 

[Java] Lombok 정리

[Java] Lombok 정리 @Data getter, setter, toString, hasCode, equals, constructor 등을 자동으로 생성해준다. 해당 어노테이션에 있는 속성인 staticConstructor는 static한 생성자를 만들어주는 속성이다. @Da..

hochoon-dev.tistory.com

 

https://cheese10yun.github.io/lombok/

 

실무에서 Lombok 사용법 - Yun Blog | 기술 블로그

실무에서 Lombok 사용법 - Yun Blog | 기술 블로그

cheese10yun.github.io

 

https://www.baeldung.com/lombok-builder

 

https://jdm.kr/blog/217

 

빌더 패턴(Builder Pattern) :: JDM's Blog

간만에 작성하는 디자인 패턴 포스트입니다. 이번 포스트에서는 빌더 패턴Builder Pattern에 대해 알아보고자 합니다. Builder Pattern 빌더 패턴은 추상 팩토리 패턴이나 팩토리 메소드 패턴과는 조금

jdm.kr

 

https://kwonnam.pe.kr/wiki/java/lombok/pitfall

 

반응형