Lombok 어노테이션

Dongmin Kim·2024년 9월 2일
0

🎄 Spring Boot

목록 보기
2/3
post-thumbnail

Lombok

  • Lombok은 반복되는 메소드를 어노테이션을 사용하여 자동으로 작성해주는 자바의 라이브러리이다.
  • DTO, Model, Entity는 여러 속성이 존재하고 이들이 가지는 프로퍼티를 Getter, Setter, 생성자 등을 매번 작성해야하는 경우가 있는데 이러한 부분을 자동으로 만들어주는 라이브러리가 Lombok이다.

@Getter, @Setter

클래스 내의 멤버 변수는 데이터를 외부로부터 은닉하기 위해 private로 선언이 되고, 이러한 멤버변수에 접근하기 위해 @Getter, @Setter 를 사용하여 각 변수를 조회하고 값을 할당한다.

ex) DTO 코드 (Lombok 사용 X)

public class MemberDto {
    private String name;
    private int age;
    private String birth;

    public String getName(){
        return name;
    }
    public void setName(String name){
        this.name = name;
    }
    public int getAge(){
        return age;
    }
    public void setAge(int age){
        this.age = age;
    }

ex) DTO 코드 (Lombok 사용 O)

@Getter
@Setter
@ToString
public class MemberDto {
    private String name;
    private int age;

Controller 코드

import com.example.demo.dto.MemeberDTO;

@PostMapping("/member/register")
    public String register(@ModelAttribute MemeberDTO memberDTO){
        System.out.println("MemberDTO = " + memberDTO);
        return "index";
    }
}    

@NoArgsConstructor, @AllArgsConstructor, @RequiredArgsConstructor

Lombok을 사용하면 생성자도 자동으로 생성하다.

  • @NoArgsConstructor 어노테이션은 파라미터가 없는 기본 생성자를 생성
  • @AllArgsConstructor 어노테이션은 모든 필드 값을 파라미터로 받는 생성자를 생성
  • @RequiredArgsConstructor 어노테이션은 final이나 @NonNull인 필드 값만 파라미터로 받는 생성자를 생성
@NoArgsConstructor
@RequiredArgsConstructor
@AllArgsConstructor
public class User {
  private Long id;
  @NonNull
  private String username;
  @NonNull
  private String password;
  private int[] scores;
}
User user1 = new User(); // @NoArgsConstructor
User user2 = new User("dale", "1234"); // @RequiredArgsConstructor
User user3 = new User(1L, "dale", "1234", null); //@AllArgsConstructor

@ToString

toString() 메소드를 자동으로 생성하고, exclude 속성을 사용하면, 특정 필드를 toString() 결과에서 제외시킬 수도 있다. 

@ToString(exclude = "password")
public class User {
  private Long id;
  private String username;
  private String password;
}

0개의 댓글