Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

ENN

Lombok의 기능 알아보기 본문

백엔드

Lombok의 기능 알아보기

ParkIsComing 2022. 9. 19. 01:18

Lombok은 Java에서 매우 많이 쓰이는 라이브러리이다. 특히 DTO를 사용한다면 용이하게 사용할 수 있는 라이브러리이다. Lombok의 기능을 하나씩 알아보자.

 

@Getter와 @Setter

계층간 데이터 전달을 위해 DTO를 사용하다보면 DTO 안에 변수가 많아질수록 getter와 setter가 많이 필요하다. 변수 하나당 get,set 하나씩 설정하다보니 변수가 많아지면 보기에도 지저분하다.

 

하지만 Lombok을 사용한다면 class 앞에 @Getter @Setter만 붙여주면 된다. 따로 get, set을 선언할 필요도 없고 DTO 내부의 변수에 접근하려면 get변수명() 또는 set변수명()의 형태로 호출하면 된다

(주의 : 변수명 앞글자는 대문자로 바꿔줘야한다.)

 

예시 코드는 다음과 같다.

@Getter
@Setter
public class ChatDTO {
    private String userid;
    private int clgid;
    private String message;
}

 

@AllArgsConstructor

모든 변수를 파라미터로 받는 생성자를 자동으로 만들어준다. Lombok이 있다면 생성자 생성도 간편해진다. 더 설명할 것도 없는, 이름 그대로의 기능이다. 

 

앞서 설명한 DTO 코드에 @AllArgsConstructor를 사용하면 다음과 같은 생성자를 만든 것과 같다.

@Getter
@Setter
@AllArgsConstructor
public class ChatDTO {
    private String userid;
    private int clgid;
    private String message;
}

public chatDTO(Stirng userid, int clgid,String message){
	this.clgid = clgid;
    this.userid = userid;
    this.message = message;
 }

 

@NoArgsConstructor

어떠한 변수도 파라미터로 받지 않는 생성자를 자동으로 만들어준다.

 

먼저 설명한 DTO에 @NoArgsConstructor을 사용하면 다음과 같은 생성자를 만든 것과 같다.

@Getter
@Setter
@NoArgsConstructor
public class ChatDTO {
    private String userid;
    private int clgid;
    private String message;
}

public chatDTO(){
	
 }

 

@RequiredArgsConstructor

특정 변수만을 파라미터로 받는 생성자를 자동으로 만들어준다. 생성자의 파라미터로 하고 싶은 변수에 @NonNull을 붙여주거나 final로 선언하면 된다.

 

예시 코드는 다음과 같다.

@Getter
@Setter
@RequiredArgsConstructor
public class ChatDTO {
	@NonNull
    private String userid;
    private final int clgid;
    private String message;
}

public chatDTO(Stirng userid, int clgid){
	this.clgid = clgid;
    this.userid = userid;

 }

 

지금까지 사람들이 가장 많이 사용하는 어노테이션만 뽑아서 정리해보았다. 끝.

'백엔드' 카테고리의 다른 글

My Batis  (0) 2022.09.19
MVC MVVM MVP  (0) 2022.09.19
[Spring] @PostMapping vs @PutMapping  (0) 2022.09.17
Spring boot 기본 개념(Controller, Service, DAO, DTO, Mapper)  (0) 2022.09.14
Thymeleaf  (0) 2022.09.13