Lee's Grow up

[Java/Lombok] Project Lombok 롬복 기초 사용법 / 다운로드 본문

PROGRAMMING/JAVA

[Java/Lombok] Project Lombok 롬복 기초 사용법 / 다운로드

효기로그 2019. 9. 30. 10:54
반응형

Project Lombok? 롬복이란? 

Project Lombok는 Java 라이브러리중 하나로, 멤버 변수에 대한 Getter/Setter, Method, Equlas(),ToString()등과 생성자 생성코드를 불필요하게 반복적으로 만들었지만, Annotation(어노테이션) 기반으로 자동으로 생성해 주는 라이브러리다. 

Lombok(롬복) 다운로드


1. Lombok 공식 홈페이지를 통한 다운로드 : https://projectlombok.org

 

Project Lombok

 

projectlombok.org

2. MVNrepository를 통한 다운로드 : https://mvnrepository.com

 

Maven Repository: Search/Browse/Explore

The AWS Java SDK for Amazon Kinesis module holds the client classes that are used for communicating with Amazon Kinesis Service Last Release on Sep 27, 2019

mvnrepository.com

 

 

  • lombok 입력 -> Project Lombok 클릭

 

  • 원하는 버전의 lombok 선택 후 원하는 방식으로 다운로드 진행

Lombok(롬복) 설치하기


  • cmd를 실행시켜서 lombok.jar이 설치된 경로로 이동

 

  • cmd에 java -jar lombok-{설치한 버전}.jar 로 롬복 인스톨러를 실행 후 아래 이미지와 같은 화면이 뜨면, Install/Update를 클릭 ( java 명령어가 실행이 안된다면 환경 변수 설정부터 진행 할 것 -> 링크 Click Me )

  • eclipse, STS, 전자정부프레임워크 등등... IDE가 설치된 폴더로 가서 lombok.jar이 생성되어 있으면 설치 완료

Lombok(롬복) 사용법

기존의 사용법 자바 클래스

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
public class Lombok {
    private String str;
    private Integer intNum;
    private Long longNum;
    
    
    public Lombok() {
        super();
    }
 
    public Lombok(String str, Integer intNum, Long longNum) {
        super();
        this.str = str;
        this.intNum = intNum;
        this.longNum = longNum;
    }
 
    public String getStr() {
        return str;
    }
 
    public void setStr(String str) {
        this.str = str;
    }
 
    public Integer getIntNum() {
        return intNum;
    }
 
    public void setIntNum(Integer intNum) {
        this.intNum = intNum;
    }
 
    public Long getLongNum() {
        return longNum;
    }
 
    public void setLongNum(Long longNum) {
        this.longNum = longNum;
    }
 
    @Override
    public String toString() {
        return "Lombok [str=" + str + ", intNum=" + intNum + ", longNum=" + longNum + "]";
    }
    
}
 

 

lombok 사용 클래스

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
 
@NoArgsConstructor
@AllArgsConstructor
@Data
public class Lombok {
    private String str;
    private Integer intNum;
    private Long longNum;
        
}
 
 

 

위와 같이 기존의 코드를 어노테이션 선언으로 줄일 수 있는 효과가 있다.

 

자주 사용 되는 어노테이션


기준은 제 마음대로 입니다.... ㅎㅎ

어노테이션 설명
@Getter / @Setter

접근자 설정자 생성에 대한 어노테이션

Class에 선언 : 모든 필드에 자동으로 접근자와 설정자 지정

Filed에 선언 : 선언된 필드값에 대한 접근자와 설정자 지정 

1
2
3
4
5
6
7
8
9
10
@Getter // 클래스에 선언
public class Lombok {
    @Setter // 필드에 선언
    private String str;
    @Setter // 필드에 선언
    private Integer intNum;
    private Long longNum;
        
}
 
                                                                    

@NoArgsConstructor @RequiredArgsConstructor @AllArgsConstructor

생성자에 생성에 대한 어노테이션

@NoArgsConstructor은 파라미터가 없는 기본 생성자를 생성 

@AllargsConstructor은 모든 필드를 파라미터로 받는 생성자 생성

@RequiredAargConstructor은 final이나 @NonNull인 필드 값만 파라미터로 받는 생성자를 생성

1
2
3
4
5
6
7
8
9
10
11
12
@NoArgsConstructor
@AllArgsConstructor
@RequiredArgsConstructor
public class Lombok {
    @NonNull // 생성자 호출 시 Lombok('strParam', 100 ); 으로 생성자 호출 가능
    private String str;
    @NonNull
    private Integer intNum;
    private Long longNum;
        
}
 
cs
@ToString

toString() 오버라이딩 메소드를 자동 생성

exclude 속성을 사하면 특정 필드를 toString()에서 제외가능

ex ) @ToString(exclude = "userName") 로 선언시 필드에서 userName는 제외하고          toString() 메소드를 생성한다.

1
2
3
4
5
6
7
@ToString(exclude="str")
public class Lombok {
    private String str;
    private Integer intNum;
    private Long longNum;
}
 
                                                                     
@EqualsAndHashCode

equals()와 hashCode()를 자동생성

equals() = 객체의 값이 같은지 비교

hashCode() = 객체의 저장된 주소가 같은지 비교

callSuper 속성을 통해서 부모 클래스의 필드까지 비교할지 설정가능

@EqualsAndHashCode(callSuper = true ) 의 경우 부모 클래스의 값도 같은지 체크하며

false의 경우 자신 클래스의 필드 값들만 고려합니다.

1
2
3
4
5
6
7
8
9
10
@EqualsAndHashCode(callSuper=false)
public class Lombok extends Exception{
    @Setter // 필드에 선언
    private String str;
    @Setter // 필드에 선언
    private Integer intNum;
    private Long longNum;
        
}
 
 
                                                   
@Data

위 본문 예제에서 사용된 어노테이션이며 위에 설명 된 @Getter/@Setter/@RequiredArgsConstrucotr/@ToString/@EqualsAndHashCode를 한번에 설정해주는 어노테이션

1
2
3
4
5
6
7
8
9
10
11
12
13
@AllArgsConstructor
@NoArgsConstructor
@Data
public class Lombok extends Exception{
    @Setter // 필드에 선언
    private String str;
    @Setter // 필드에 선언
    private Integer intNum;
    private Long longNum;
        
}
 
 
 
                                                   

그 외 많은 어노테이션을 지원합니다. 필요한 내용은 공식홈페이지에 자세하게 설명되어 있으니 참고하면 좋을거 같습니다. 아래 공식홈페이지 링크입니다.

롬복 공식홈페이지

 

Stable

 

projectlombok.org

 

반응형
Comments