장점
- Annotation 기반으로 코드를 작성하므로 생산성이 높아짐
- 반복되는 코드를 생략할 수 있어 가독성이 높아짐
- Lombok을 안다면 코드를 유추할 수 있어 유지보수에 용이
Intellij에 Lombok 설치
- File→Settings 에 들어간다.
- Plugins→lombok 검색 후 설치한다.
File→Settings→Build, Execution, Deployment→Compiler→Annotation Processors 에서 Enable annotation processing을 체크한다.
맛보기
다음과 같은 클래스가 있다.
Member.java
public class Member {
private String name;
private Integer age;
private Integer birthday;
private Integer studentNumber;
private Integer grade;
}
IDE 기능을 활용하여 생성자, getter/setter 코드를 추가하면 다음과 같다.
public class Member {
private String name;
private Integer age;
private Integer birthday;
private Integer studentNumber;
private Integer grade;
public Member() {
}
public Member(String name, Integer age, Integer birthday, Integer studentNumber, Integer grade) {
this.name = name;
this.age = age;
this.birthday = birthday;
this.studentNumber = studentNumber;
this.grade = grade;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Integer getBirthday() {
return birthday;
}
public void setBirthday(Integer birthday) {
this.birthday = birthday;
}
public Integer getStudentNumber() {
return studentNumber;
}
public void setStudentNumber(Integer studentNumber) {
this.studentNumber = studentNumber;
}
public Integer getGrade() {
return grade;
}
public void setGrade(Integer grade) {
this.grade = grade;
}
}
코드 길이가 매우 길어지기 때문에 Lombok의 Annotation을 활용해보자
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class Member {
private String name;
private Integer age;
private Integer birthday;
private Integer studentNumber;
private Integer grade;
}
매우 짧아진 것을 확인할 수 있다.
Annotation 코드화 하기
만약 Lombok Annotation으로 되어있는 코드를 실제 코드화 시키려면 다음과 같이 하면 된다.
파일 우클릭 → Refactor → Delombok
생성되는 코드 확인하기
Lombok을 통해 생성되는 코드가 어떤 것이 있는지 확인하려면 다음처럼 하면 된다.
주요 Annotation
@Getter, @Setter
클래스 필드 getter/setter 메서드를 생성해준다.
생성자 자동 생성 Annotation
- @NoArgsConstructor
- 매개변수가 없는 생성자 생성
- @AllArgsConstructor
- 모든 필드를 매개변수로 받는 생성자 생성
- @RequiredArgsConstructor
- 필드 중 final이나 @NotNull이 설정된 변수를 매개변수로 갖는 생성자 생성
@ToString
toString() 메서드를 생성해준다.
IDE에서 자동생성해주는 toString()과 동일
@ToString(exclude = {“필드명1”, “필드명2”})
- 클래스에서 필드명1, 필드명2를 제외하고 toString 메서드를 생성한다.
@EqualsAndHashCode
객체의 동등성과 동일성을 비교하는 연산 메서드 생성
- 동등성
- 두 객체의 내용이 같은 지 비교
- 동일성
- 두 객체가 같은 객체인지 동일성을 비교
callSuper
- @EqualsAndHashCode(callSuper = true)
- 부모 클래스의 필드까지 비교할 필요가 있는 경우
- @EqualsAndHashCode(callSuper = true)
@Data
@Getter, @Setter, @RequiredArgsConstructor, @ToString, @EqualsAndHashCode 를 모두 포함하는 Annotation
Uploaded by N2T
'Programming > [Spring Boot]' 카테고리의 다른 글
JPA save vs saveAndFlush (0) | 2023.03.16 |
---|---|
Entity 관련 Annotation (0) | 2023.03.12 |
JpaRepository getById, findById (0) | 2023.03.12 |
DB 관련 용어 (1) | 2023.02.01 |
Swagger를 활용한 REST API 명세 문서화 (0) | 2023.01.25 |