2021-03-04 TIL(at work)
Java Library
- 자바 언어로 프로그래밍을 할 때, 이를 도와주는 외부 라이브러리들이 있다. 몇몇의 유명한 라이브러리들 중, 실제 업무에서 사용하고 있는
Lombok이라는 라이브러리에 대해 자세히 알아보았다.
Lombok?
- 롬복은 다양한 애노테이션을 제공하는 라이브러리인데, 롬복을 잘 활용하면 코드를 획기적으로 줄일 수 있다. 대표적으로
@getter,@setter와 같은 애노테이션이 있다.
1. Lombok 설치하기
- 빌드 도구로 maven을 사용하는 경우
pom.xml파일에 아래 디펜던시를 추가한다.1.18.18버전은 2021년 1월에 출시된 버전이고, 자신의 프로젝트에 맞는 버전을 찾아 디펜던시를 추가하면 된다.
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.18</version>
</dependency>
- 빌드 도구로 gradle을 사용하는 경우
build.gradle파일에 아래의 의존성을 주입한다.
implementation 'org.projectlombok:lombok:1.18.18'
- 프로젝트를 어떻게 구성했는지에 따라 외부 라이브러리를 사용하는 방식이 달라지기 때문에, 자신의 프로젝트에 따라 설치 방법은 달라진다. (참고 URL : https://search.maven.org/artifact/org.projectlombok/lombok/1.18.18/jar)
2. Lombok 활용하기
(1) Vanilla Java
- Lombok을 사용하지 않고
Article이라는 클래스를 작성했다. 참고로, Vanilla Java를 이용했다는 말은 순수한 자바 언어만을 이용하여 코드로 작성했다는 의미이다.
public class Article {
private String articleId;
private String title;
private String author;
private String content;
private long likes;
public String getArticleId() {
return articleId;
}
public void setArticleId(String articleId) {
this.articleId = articleId;
}
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 String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public long getLikes() {
return likes;
}
public void setLikes(long likes) {
this.likes = likes;
}
@Override
public String toString() {
return "Article{" +
"articleId='" + articleId + '\'' +
", title='" + title + '\'' +
", content='" + content + '\'' +
", author='" + author + '\'' +
", likes=" + likes +
'}';
}
}
(2) @Getter & @Setter
- 여기서
@Getter와@Setter를 사용하여 코드를 줄일 수 있다. 두 애노테이션을 사용하면, 일일이 모든 변수에 대한getter와setter를 만들어줄 필요가 없다.
@Getter
@Setter
public class Article {
private String articleId;
private String title;
private String author;
private String content;
private long likes;
@Override
public String toString() {
return "Article{" +
"articleId='" + articleId + '\'' +
", title='" + title + '\'' +
", content='" + content + '\'' +
", author='" + author + '\'' +
", likes=" + likes +
'}';
}
}
- 클래스 자체에
@Getter,@Setter애노테이션을 달 수도 있고 각각의 변수에 애노테이션을 붙일 수도 있다.
public class Article {
@Getter @Setter private String articleId;
@Getter @Setter private String title;
@Getter @Setter private String author;
@Getter @Setter private String content;
@Getter @Setter private long likes;
@Override
public String toString() {
return "Article{" +
"articleId='" + articleId + '\'' +
", title='" + title + '\'' +
", content='" + content + '\'' +
", author='" + author + '\'' +
", likes=" + likes +
'}';
}
}
(3) @ToString
@ToString을 사용하여toString()메서드를 대체할 수 있다.
@Getter
@Setter
@ToString
public class Article {
private String articleId;
private String title;
private String author;
private String content;
private long likes;
}
(4) @Data
@Data애노테이션은 위에서 사용한@Getter,@Setter,@ToString을 모두 포함한다. 그 외에@EqualsAndHashCode도 포함한다.
@Data
public class Article {
private String articleId;
private String title;
private String author;
private String content;
private long likes;
}
(5) @NotNull
@NotNull애노테이션을 사용하면, 도메인 클래스의 특정 값에NotNull이라는 조건을 추가할 수 있다.
@Data
public class Article {
@NotNull private String articleId;
private String title;
private String author;
private String content;
private long likes;
}
(6) 생성자와 관련된 애노테이션
- 이 외에도 생성자와 관련된
@NoArgsConstructor,@RequiredArgsConstructor,@AllArgsConstructor와 같은 애노테이션이 있다.@NoArgsConstructor: 파라미터가 없는 생성자를 생성한다.@RequiredArgsConstructor: 필수 파라미터, 즉@NotNull이 붙은 필드를 파라미터로 받는 생성자를 생성한다.@AllArgsConstructor: 모든 필드를 파라미터로 받는 생성자를 생성한다.
3. 출처
- https://projectlombok.org/features/all