7. 스프링부트 Lombok(롬복) 사용하기
in Gitlog on springboot-mvc
스프링부트 Lombok(롬복) 사용해보자. 개인적으로 Lombok은 단순하게 편리를 위해 쓰이거나 공부를 위한 것을 떠나, 기본적인거는 다룰 줄 알아야 한다고 생각된다.
개발 환경
- OS: Window 10
- Dev Tool: Eclipse IDE 2019-06
- JDK: 1.8(_221)
- JAVA: 8
- Framework: Springboot v2.1.7
- Build Tool: Gradle v3
- RDBMS: MariaDB
- DBCP: hikariCP
- Persistence Framework: MyBatis
- #Lombok
1. Lombok(롬복)이란?
프로젝트가 객체 중심으로 개발하던 데이터 중심으로 개발하던 개발자들은 VO/DTO/Domain 객체를 생성해 getter/setter 그리고 toString 메서드를 만듭니다. 처음에 개발 초기에는 깔끔하게 하지만 잦은 수정과 필드명 변경 추가에 따라 관리가 쉽지 않습니다.
그래서 롬복(Lombok)은 자바 클래스를 만들때 자주 사용되는 getter/setter나 toString 등의 코드를 애너테이션으로 대체해서 선언하고 java 코드를 컴파일 할 때 그에 맞는 코드를 생성해주는 것이다.
2. Lombok 의존성 추가 및 설치
Lombok 의존성 추가
Lombok 외부라이브러리를 사용하기 위해 의존성을 추가하고, 컴파일 시 새로운 플러그인 에러이슈 떄문에 아래와 같이 의존성 및 설정을 추가한다.
프로젝트 생성 시 Lombok를 생성했으면 추가 할 필요 없다.
build.gradle
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
dependencies {
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
}
Lombok 다운로드
Lombok 다운로드 - https://projectlombok.org/download
Lombok 실행
다운받은 lombok.jar 파일
을 실행하기 위해서
- 1 . cmd 창 접속
- 2 . 해당 프로젝트 JDK 설치 경로 이동
$ C:\project\neo\Java\jdk1.8.0_221\bin
- 3 . lombok.jar 파일 실행
$ java -jar c:\project\neo\lombok.jar
해당 프로젝트 Eclipse 선택
Eclipse에 설치
이렇게 설치는 끝이다.
3. Lombok 적용
Ecplise 내 Generate 기능
Eclipse 내에 있는 기능을 사용할 경우 필드명을 수정하거나 추가 삭제 할 경우 작업이 많이 그에 따른 toString 메서드 또한 작업이 필요하다.
boardDto.java
package neo.apps.board.dto;
private static final long serialVersionUID = 1L;
public int boardIdx;
public String title;
public String content;
public int hitCnt;
public String regId;
public String regDate;
public int getBoardIdx() {
return boardIdx;
}
public void setBoardIdx(int boardIdx) {
this.boardIdx = boardIdx;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public int getHitCnt() {
return hitCnt;
}
public void setHitCnt(int hitCnt) {
this.hitCnt = hitCnt;
}
public String getRegId() {
return regId;
}
public void setRegId(String regId) {
this.regId = regId;
}
public String getRegDate() {
return regDate;
}
public void setRegDate(String regDate) {
this.regDate = regDate;
}
@Override
public String toString() {
return "BoardDto [boardIdx=" + boardIdx + ", title=" + title + ", content=" + content + ", hitCnt=" + hitCnt
+ ", regId=" + regId + ", regDate=" + regDate + "]";
}
}
Lombok 애너테이션 사용
boardDto.java를 아래와 같이 코드가 전부이다. 애너테이션을 선언함으로써 개발자가 구현 할 개발 코드는 줄어들게 되고 그에 따른 추가 작업이 줄어든다.
간단한 기능만 설명하면 @Getter @Setter 애너테이션은 보시다시피 getter/setter를 대신하고 @ToString은 toString() 메서드를 대신한다.
boardDto.java
@Getter @Setter
@ToString
package neo.apps.board.dto;
public Integer boardIdx;
public String title;
public String contents;
public int hitCnt;
public String regId;
public String regDate;
}
필드 출력
// 상세정보
BoardDto boardDetail = this.boardService.selectBoardDetail(request, boardIdx);
System.out.print(boardDetail);
Generate toString()
BoardDto [boardIdx=2, title=테스트 제목 2, content=테스트 게시판 내용입니다. 2, hitCnt=3, regId=admin, regDate=2019-08-24]
Lombok 사용시
BoardDto(boardIdx=2, title=테스트 제목 2, content=테스트 게시판 내용입니다. 2, hitCnt=3, regId=admin, regDate=2019-08-24)
4. Lombok 애너테이션 추가 설명
Lombok 애너테이션 설명
- https://goddaehee.tistory.com/95
- https://kkiuk.tistory.com/91
Lombok 사용 설명
- https://kkiuk.tistory.com/91
[참고]
- https://projectlombok.org/