본문 바로가기

개발/프로젝트

[스프링부트 게시판] 5. Lombok 세팅

이번 게시물에는 저번 의존성 설정 때 추가했던 Lombok 에 대해 설명드리고자 합니다.

 

pom.xml

 

우선 Lombok 은 간단하게 말하자면 어노테이션 기반으로 코드를 자동완성 해주는 라이브러리 입니다.

 

기존에 VO를 설정할 때 각 해당하는 형과 변수값을 정하고 Getter와 Setter를 만들고 필요하다면 생성자까지 만들어야합니다. 하지만 이렇게 작성하는 경우 매우 길어지고 보기가 불편해집니다.

 

public class Store extends Common {

    private String companyName;                                 // 상호명
    private String industryTypeCode;                            // 업종코드
    private String businessCodeName;                            // 업태명
    private String industryName;                                // 업종명(종목명)
    private String telephone;                                   // 전화번호
    private String regionMoneyName;                             // 사용가능한 지역화폐 명
    private boolean isBmoneyPossible;                           // 지류형 지역화폐 사용가능 여부
    private boolean isCardPossible;                             // 카드형 지역화폐 사용가능 여부
    private boolean isMobilePossible;                           // 모바일형 지역화폐 사용가능 여부
    private String lotnoAddr;                                   // 소재지 지번주소
    private String roadAddr;                                    // 소재지 도로명주소
    private String zipCode;                                     // 우편번호
    private double longitude;                                   // 경도
    private double latitude;                                    // 위도
    private String sigunCode;                                   // 시군 코드
    private String sigunName;                                   // 시군 이름

    public String getCompanyName() {
        return companyName;
    }

    public void setCompanyName(String companyName) {
        this.companyName = companyName;
    }

    public String getIndustryTypeCode() {
        return industryTypeCode;
    }

    public void setIndustryTypeCode(String industryTypeCode) {
        this.industryTypeCode = industryTypeCode;
    }

    public String getBusinessCodeName() {
        return businessCodeName;
    }

    public void setBusinessCodeName(String businessCodeName) {
        this.businessCodeName = businessCodeName;
    }

    public String getIndustryName() {
        return industryName;
    }

    public void setIndustryName(String industryName) {
        this.industryName = industryName;
    }

    public String getTelephone() {
        return telephone;
    }

    public void setTelephone(String telephone) {
        this.telephone = telephone;
    }

    public String getRegionMoneyName() {
        return regionMoneyName;
    }

    public void setRegionMoneyName(String regionMoneyName) {
        this.regionMoneyName = regionMoneyName;
    }

    public boolean isBmoneyPossible() {
        return isBmoneyPossible;
    }

    public void setBmoneyPossible(boolean bmoneyPossible) {
        isBmoneyPossible = bmoneyPossible;
    }

    public boolean isCardPossible() {
        return isCardPossible;
    }

    public void setCardPossible(boolean cardPossible) {
        isCardPossible = cardPossible;
    }

    public boolean isMobilePossible() {
        return isMobilePossible;
    }

    public void setMobilePossible(boolean mobilePossible) {
        isMobilePossible = mobilePossible;
    }

    public String getLotnoAddr() {
        return lotnoAddr;
    }

    public void setLotnoAddr(String lotnoAddr) {
        this.lotnoAddr = lotnoAddr;
    }

    public String getRoadAddr() {
        return roadAddr;
    }

    public void setRoadAddr(String roadAddr) {
        this.roadAddr = roadAddr;
    }

    public String getZipCode() {
        return zipCode;
    }

    public void setZipCode(String zipCode) {
        this.zipCode = zipCode;
    }

    public double getLongitude() {
        return longitude;
    }

    public void setLongitude(double longitude) {
        this.longitude = longitude;
    }

    public double getLatitude() {
        return latitude;
    }

    public void setLatitude(double latitude) {
        this.latitude = latitude;
    }

    public String getSigunCode() {
        return sigunCode;
    }

    public void setSigunCode(String sigunCode) {
        this.sigunCode = sigunCode;
    }

    public String getSigunName() {
        return sigunName;
    }

    public void setSigunName(String sigunName) {
        this.sigunName = sigunName;
    }

}

 

이를 줄일 수 있도록 설정하는 것이 바로 Lombok입니다. 위에 @Getter와 @Setter를 설정하면 기존에 Getter와 Setter를 불러와 길었던 문장들은 없음에도 Getter와 Setter가 존재하고 있습니다.

 

@Getter // Getter 어노테이션
@Setter // Setter 어노테이션
public class Store extends Common {

    private String companyName;                                 // 상호명
    private String industryTypeCode;                            // 업종코드
    private String businessCodeName;                            // 업태명
    private String industryName;                                // 업종명(종목명)
    private String telephone;                                   // 전화번호
    private String regionMoneyName;                             // 사용가능한 지역화폐 명
    private boolean isBmoneyPossible;                           // 지류형 지역화폐 사용가능 여부
    private boolean isCardPossible;                             // 카드형 지역화폐 사용가능 여부
    private boolean isMobilePossible;                           // 모바일형 지역화폐 사용가능 여부
    private String lotnoAddr;                                   // 소재지 지번주소
    private String roadAddr;                                    // 소재지 도로명주소
    private String zipCode;                                     // 우편번호
    private double longitude;                                   // 경도
    private double latitude;                                    // 위도
    private String sigunCode;                                   // 시군 코드
    private String sigunName;                                   // 시군 이름

}

 

Lombok을 따로 설치하려면 공식 사이트에 다운로드 페이지로 가야합니다.

 

https://projectlombok.org/download

 

Download

 

projectlombok.org

 

저는 Spring Boot 설정 시 라이브러리로 적용했기에 .m2 폴더 안에 있는 repositorygroupId에 써있는 org.projectlombok 을 들어가면 Lombok 관련 파일들이 있습니다.

 

해당 폴더로 이동하면 Git Bash Here 또는 CMD 를 실행시켜 아래와 같은 명령어를 통해 버전에 맞는 jar파일을 실행시킵니다.

 

 

그럼 다음과 같은 창이 뜰텐데 여기서 'Specify location' 버튼을 클릭하고 현재 사용하고 있는 sts 툴의 실행 파일 경로를 등록해줍니다.

 

C에 따로 이클립스가 있어서 따로 쓰고 있는 STS의 실행 파일을 Specify location으로 찾아야 합니다!

경로에 맞게 등록 후 Install / Update 를 클릭하여 설치 후 프로그램을 종료합니다.

 

Lombok 설치 성공!

 

STS를 재시작을 한 후 저번에 만들었던 Member 클래스 에 Getter와 Setter를 지우고 위와 같은 어노테이션을 추가합니다.

 

  • Data : @Getter @Setter 어노테이션이 들어있는 어노테이션
  • AllArgsConstructor : 모든 필드를 포함하는 전체 생성자
  • NoArgsConstructor : 빈 생성자, 기본 생성자

 

 

서버를 재시작하고 이전에 진행했던 요청이 정상적으로 작동하는 것을 확인 할 수 있습니다.

 

이전 작업했던 Post 작업 정상 작동!

 

(주의!)

Lombok이 설치가 되었는데 혹시나 스프링 자체가 켜지는게 멈추거나 아예 로고가 안뜨는 경우가 있습니다. 이 때 STS의 ini 파일이 있습니다.

 

여기서 Lombok을 설치하면 해당 exe 파일에 위치한 폴더에 lombok.jar가 나타나는데 제가 설정해 놓은 것에 한글이 있으면 인식이 안되는 경우가 있습니다.

 

jaavagent의 경로

 

저 같은 경우 STS를 F:\에 설치해놓았기 때문에 F:\ 안에서만 설정을 해야합니다.

lombok.jar를 F:\에 놓고 javaagent의 경로를 아래와 같이 변경시켰습니다.

 

 

이 후 정상적으로 다시 나타나는 것을 확인 할 수 있습니다. 이에 주의하면서 수정하시면 됩니다.