상세 컨텐츠

본문 제목

lombok 어노테이션

Spring/lombok

by Chan.94 2021. 9. 17. 21:31

본문

반응형

- 이전글 -

 

eclipse(STS)에 lombok 설치

lombok 이란 어노테이션 기반으로 코드를 자동완성해주는 라이브러리이다. lombok을 이용하면 Getter, Setter, Equlas, ToString 등과 다양한 방면의 코드를 자동완성시킬 수 있다. 오늘은 lombok 설치에 대해

fvor001.tistory.com


 

lombok 이란 어노테이션 기반으로 코드를 자동완성해주는 라이브러리이다. 
lombok을 이용하면 Getter, Setter, Equlas, ToString 등과 다양한 방면의 코드를 자동완성시킬 수 있다.

개발을 하다보면 기계적으로 작성하는 코드들이 상당히 많다. 
기계적인 코드들을 자동화하여 코드를 다이어트 해주는 라이브러리가 lombok이다.

오늘은 lombok 라이브러중 @Getter, @Setter, @AllArgsConstructor, @NoArgsConstructor, @RequiredArgsConstructor, @ToString, @Data 어노테이션에 대해 정리하겠다.

코드 다이어트라는 것이 어떤것인지 간단한 예를 들어보겠다.


lombok 적용전

public class Login {
    private String id;
    private String pw;

    public String getId() {
        return id; 
    }
    public String setId(String id) {
        this.id = id; 
    }
    public String getPw() {
        return pw; 
    }
    public String setPw(String pw) {
        this.pw = pw; 
    }
}

getter, setter와 같이 기계적으로 추가해주는 코드들이 상당히 많다.

lombok을 적용시켜 보겠다.

 

lombok 적용 후

@Getter
@Setter
public class Login {
    private String id;
    private String pw;
}

소스가 간결해진 것을 확인할 수 있다. class에 변수가 많으면 많을수록 코드는 간결해진다.

 


[ @Getter, @Setter ]

lombok에서 가장 많이 사용되는 어노테이션이다.

@Getter, @Setter를 클래스에 적용하게 되면 모든 변수들에 적용이 가능하고, 변수에 적용하게 되면 해당 변수만 적용된다.

@Getter
public class User {
    private String id;  //아이디
    @Setter
    private String pw;  //비밀번호
    private String jumin;  //주민번호
    @Setter
    private String accessTime;  //접속시간
}

다음과 같은 객체가 있다면 id, jumin 변수에는 getter만 사용할 수 있고 pw, accessTime 변수는 getter/setter를 사용 할 수 있다.


[ @AllArgsConstructor ]

@AllArgsConstructor는 모든 변수를 사용하는 생성자를 자동완성시켜주는 어노테이션이다.

@Getter
@AllArgsConstructor
public class User {
    private String id;  //아이디
    private String pw;  //비밀번호
    private String jumin;  //주민번호
    private String accessTime;  //접속시간

    /* 
    AllArgsConstructor 어노테이션을 사용하여 생성자를 자동으로 생성할 수 있다.
    public User (String id, String pw, String jumin, String accessTime){
        this.id = id;
        this.pw = pw;
        this.jumin = jumin;
        this.accessTime = accessTime;
    }
    */
}

[ @NoArgsConstructor ]

@NoArgsConstructor는 기본 생성자를 자동완성시켜주는 어노테이션이다.

@Getter
@NoArgsConstructor
public class User {
    private String id;  //아이디
    private String pw;  //비밀번호
    private String jumin;  //주민번호
    private String accessTime;  //접속시간

    /* 
    NoArgsConstructor 어노테이션을 사용하여 기본 생성자를 자동으로 생성할 수 있다.
    public User (){

    }
    */
}

[ @RequiredArgsConstructor ]

@RequiredArgsConstructor는 특정 변수만 활용하는 생성자를 자동 생성해주는 어노테이션이다.

생성자의 인자로 추가하는 방법으로는 @NonNull어노테이션과 변수를 final로 선언하는 두 가지 방법이 있다.

@Getter
@RequiredArgsConstructor
public class User {
    @NonNull
    private String id;  //아이디
    @NonNull
    private String pw;  //비밀번호
    private final String jumin;  //주민번호
    private String accessTime;  //접속시간

    /* 
    RequiredArgsConstructor 어노테이션을 사용하여 생성자를 자동으로 생성할 수 있다.
    public User (String id, String pw, String jumin){
        this.id = id;
        this.pw = pw;
        this.jumin = jumin;
    }
    */
}

[ @ToString ]

@ToString 어노테이션을 활용하면 ToString 메소드를 자동 생성해준다.

출력을 원하지 않는 변수에는 @ToString Exclude를 선언한다.

@Getter
@ToString
public class User {
    private String id;  //아이디
    @ToString.Exclude
    private String pw;  //비밀번호
    @ToString.Exclude
    private String jumin;  //주민번호
    private String accessTime;  //접속시간
}

[ @Data ]

@Data 어노테이션은 @ToString, @EqualsAndHashCode, @Getter, @Setter,@RequiredArgsConstructor를 자동완성시켜준다.

@Data 어노테이션은 사용을 지양한다.

모든 변수에 @Setter가 적용된다면 변경되면 안돼는 변수들을 수정할 수 있기 때문이다.

 

 


 

lombok @Builder

[Spring Boot/lombok] - lombok @Builder (점층적 생성자 패턴, 자바 빈즈 패턴, 빌더 패턴)

 

 

반응형

관련글 더보기

댓글 영역

>