LOMBOK(롬복)란?
Java 라이브러리로 반복되는getter,setter,toString 등의 메서드 작성 코드를 줄여주는 코드 다이어트 라이브러리
쓰면 뭐가좋은데?
보통 클래스에서 생성한 멤버변수에 대응되는 getter, setter,toString()메소드,생성자를 하나씩 다 작성해야함.
심지어 코드자체가 반복되는 메소드라 번거롭다.
그런데 롬복을 이용하면 코드도 보기 쉽게 작성할 수 있다!
->반복되는 코드를 줄여줌으로써 가독성UP
어노테이션을 제공하고, 이를 기반으로 코드를 컴파일 과정에서 생성해주기 때문
즉, 코딩과정에서는 롬복과 관련된 어노테이션만 보이고
getter/setter과 같은 메서드는 보이지 않는다.
하지만 그래도 실제로 컴파일된 결과물에는 코드가 생성되어 있다
어떻게 쓰는데?
Dependency 추가하기
<Maven 사용하는 경우 : pom.xml에 추가>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.20</version>
</dependency>
<Gradle 사용하는 경우 : build.gradle에 추가>
provided 'org.projectlombok:lombok:1.16.20'
롬복 적용하기 전후 비교
<롬복쓰기 전> Category 모델클래스 정의
public class CategoryModel {
private String id;
private String parentId;
private String name;
private Long depthLevel;
private Long seq;
private String userYn;
public CategoryModel() {}
public CategoryModel(String id, String parentId, String name, Long depthLevel, Long seq, String userYn) {
super();
this.id = id;
this.parentId = parentId;
this.name = name;
this.depthLevel = depthLevel;
this.seq = seq;
this.userYn = userYn;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getParentId() {
return parentId;
}
public void setParentId(String parentId) {
this.parentId = parentId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Long getDepthLevel() {
return depthLevel;
}
public void setDepthLevel(Long depthLevel) {
this.depthLevel = depthLevel;
}
public Long getSeq() {
return seq;
}
public void setSeq(Long seq) {
this.seq = seq;
}
public String getUserYn() {
return userYn;
}
public void setUserYn(String userYn) {
this.userYn = userYn;
}
@Override
public String toString() {
return "CategoryModel [id=" + id + ", parentId=" + parentId + ", name=" + name + ", depthLevel=" + depthLevel
+ ", seq=" + seq + ", userYn=" + userYn + "]";
}
<롬복쓴 후> Category 모델클래스 정의 - @Getter, @Setter 등 어노테이션만 붙여주면 된다.
또는 @Data하나만 붙여서도 사용할 수 있다
@Getter
@Setter
@ToString
@NoArgsConstructor
@AllArgsConstructor
public class CategoryModel {
private String id;
private String parentId;
private String name;
private Long depthLevel;
private Long seq;
private String userYn;
}
@Data
public class CategoryModel {
private String id;
private String parentId;
private String name;
private Long depthLevel;
private Long seq;
private String userYn;
}
주의사항은?
api설명과 내부동작을 어느정도 숙지해야한다.
편리하다고 쉽다고 마구쓰게 되면
예를 들어 @Data 어노테이션, @ToString어노테이션으로 자동생성되는 toString() 무한재귀호출에 빠질수도 있음
롬복 어노테이션 사용 예제
'🌱 Computer Science > Programming' 카테고리의 다른 글
Pycharm Black 설정 및 사용법 가이드 (1) | 2022.03.22 |
---|---|
한창 힙했던 언어 Python과 요즘 가장 힙한 언어 Rusty (0) | 2021.12.03 |
[Programming] Python과 Java 차이점 | 객체지향vs절차지향 (0) | 2021.08.04 |
[알고리즘] 브루트포스(brute force) (0) | 2021.06.10 |
[Programming] JAVA(객체지향언어)특징 (0) | 2020.01.12 |
[Programming] 오버라이딩(Overriding) Vs 오버로딩(Overloading) (0) | 2020.01.12 |