일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- mariaDB
- 피보나치
- 알고리즘
- 정렬
- Spring
- 백준
- java
- DFS
- 탐욕법
- mybatis
- 그리디알고리즘
- Effective Java
- select
- Database
- Greedy
- db
- 코테
- 우선순위큐
- 이펙티브자바
- join
- 깊이우선탐색
- DP
- 프로그래머스
- springboot
- 데이터베이스
- BFS
- 다이나믹프로그래밍
- 너비우선탐색
- SQL
- IntelliJ
Archives
- Today
- Total
땀두 블로그
[Spring] lombok이란 본문
Lombok이란
Lombok(롬복)은 Java 라이브러리로 반복되는 getter, setter, toString 등의 메서드 작성 코드를 줄여주는 라이브러리이다.
보통 Model 클래스나 Entity 같은 도메인 클래스 등 많은 멤버 변수가 있고 getter와 setter, 생성자 등 여러가지를 만드는데 매번 이 작업을 해주다보면 번거롭고, 매우 복잡해진다.
이러한 문제를 쉽게 해결하기 위해 있는 것이 Lombok 라이브러리이다.
Lombok은 여러 Annotation을 제공하고 이를 기반으로 코드를 컴파일과정에서 생성해 주는 방식으로 동작한다. 즉 코딩 과정에서는 lombok과 관련된 어노테이션만 보이고 getter와 setter 메서드 등은 보이지 않지만 실제로 컴파일된 클리스 파일에는 코드가 생성되어 있다는 뜻이다. 이러한 과정 덕분에 Lombok은 반복적인 코드를 줄임으로써 가독성과 생산성을 높힐 수 있다.
하지만 API 설명과 내부 동작을 숙지하지 않고 사용하게 되면 @Data, @ToString Annotation을 사용할 경우 toString()의 경우 순환 참조나 재귀호출 문제로 인하여 StackOverflowError가 발생할수도 있다.
Lombok을 사용한 것과 일반 Java 코드의 차이
Model 클래스를 하나 만들고 그 안에는 id, name이 존재한다고 하면 다음과 같이 작성한다.
public class Model {
private String id;
private String name;
public Model(String id, String name) {
super();
this.id = id;
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
위 코드를 Lombok을 이용한다면 @Getter, @Setter 등의 어노테이션을 이용하여 아래와 같이 사용할 수 있다.
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class CategoryModel {
private String id;
private String name;
}
위의 Annotation 여러 개를 사용하기 싫다면 @Data Annotation 하나만 붙여 사용해도 된다.
Lombok 설치 방법
dependencies {
...
implementation 'org.projectlombok:lombok'
...
}
이후 gradle을 로딩해주고, lombok plugin을 설치해주어야 한다.
내용을 확인해보면 lombok이 intellij 에서 기본으로 설치된 플러그인임을 알 수 있다.
이후 설정 - build, execution, deployment -> compiler -> annotation processor에서 enable annotation processing을 체크해준다.
이는 모든 프로젝트에서 각각 수행해주어야 하기 때문에 설치와 별개로 프로젝트 설정 초기에 매번 해주어야 한다.
참고 : https://dololak.tistory.com/783
'Web > Spring' 카테고리의 다른 글
[Spring] SpringBoot : Bean 생성 오류 (0) | 2022.04.11 |
---|---|
[Spring] Test를 위한 @RunWith 어노테이션을 사용하지 않는 이유 (0) | 2022.04.09 |
[GIT] .gitignore 설정하기 (0) | 2022.04.09 |
[Spring] SpringBoot build.gradle 설정 오류 해결 (0) | 2022.04.09 |
[Spring] Spring Bean 순환 참조 오류 (0) | 2022.04.06 |
Comments