반응형
실무에서 자주사용하는 Lombok 어노테이션
Lombok
개발을 하다보면 기계적으로 코드를 작성할 때가 많다. 예를 들면, DTO를 생성할 때, getter와 setter를 만드는 것이다. 이전 회사에서는 Lombok을 사용하지 않아 getter, setter을 남발(?)했던 기억이 있다.
public class User {
private String id;
private String name;
private String email;
private String juso;
private String phoneNumber;
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;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getJuso() {
return juso;
}
public void setJuso(String juso) {
this.juso = juso;
}
public String getPhoneNumber() {
return phoneNumber;
}
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
Lombok은 어노테이션 기반으로 코드를 자동완성 해주는 라이브러리이다. Lombok 을 사용하면 Getter, Setter는 물론 ToString 등과 같이 다양한 코드를 자동완성 시킬 수 있다.
- 어노테이션 기반의 코드 자동 생성을 통한 생산성 향상
- 반복적인 코드를 제거하여 가독성과 유지보수 향상
- Getter, Setter외 Builder 패턴이나 로그 생성 등 활용
@Getter / @Setter
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class User {
private String id;
private String name;
private String email;
private String juso;
private String phoneNumber;
}
@NoArgsConstructor
어떤 변수도 사용하지 않는 기본 생성자를 자동완성해주는 어노테이션이다.
@RequiredArgsConstructor
특정 변수만을 활용하여 생성자를 자동완성해주는 어노테이션이다. 특정 변수를 지정할 경우에는 해당 변수에 @NonNull 어노테이션을 사용하거나 final로 선언하여 사용할 수 있다.
@AllArgsConstructor
모든 변수를 사용하는 생성자를 자동완성해주는 어노테이션이다.
import lombok.*;
@NoArgsConstructor
@RequiredArgsConstructor
@AllArgsConstructor
public class User {
private String id;
private String name;
@NonNull
private String email;
@NonNull
private String phoneNumber;
}
User user1 = new User(); //@NoArgsConstructor
User user2 = new User("user@gmail.com", "010-1234-5678"); //@RequiredArgsConstructor
User user3 = new User("user", "유저", "user@gmail.com", "010-1234-5678"); //@AllArgsConstructor
반응형
'Back-End > Spring' 카테고리의 다른 글
[Spring] Gradle Project war 파일 생성 (0) | 2023.10.06 |
---|---|
[Spring] Spring boot, MyBatis 환경 log4jdbc 설정 (0) | 2022.12.30 |
[Spring] cannot deserialize from Object value (no delegate- or property-based Creator) 에러 (0) | 2022.06.13 |
[Spring] Spring Boot 로 Hello world 실행하기 (0) | 2022.06.12 |
[Spring] Layered Architecture (0) | 2022.06.08 |
최근댓글