728x90
320x100
📌 Lombok이란
- @Getter, @Setter 등 여러 어노테이션을 제공하고 반복되는 코드를 간편하게 줄여주는 라이브러리이다.
- 대표적인 예제 : Getter, Setter, ToString, Constructor(생성자)
📌 Lombok의 장점
- 복잡하고 반복되는 코드를 어노테이션 기반의 코드 자동 생성으로 생산성이 향상된다.
- 반복되는 코드가 줄어들어 가독성 및 유지보수성을 향상시킬 수 있습니다.
📌 Lombok의 단점
- 직관성을 중요시하는 개발자에겐 코드가 직접 눈에 보이지 않아 별로일 수 있다.
반응형
📌 Lombok 사용과 일반 java 코드의 차이
✅ getter/setter
- 직접 작성
public class MemberDto {
private String id;
private String password;
private String username;
private String email;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
- Lombok의 getter / setter 어노테이션을 사용
@Getter
@Setter
public class MemberDto {
private String id;
private String password;
private String username;
private String email;
}
📌 Lombok의 자주 사용되는 어노테이션
- @Getter : code가 컴파일 될 때 getter 메서드들을 생성, 속성 @Getter(lazy = true) 사용시 최초 한번만 Getter 호출. 이후 캐시된 값을 사용
- @Setter : code가 컴파일 될 때 setter 메서드들을 생성
- @ToString : toString() 메서드를 생성
- @Data : Getter, Setter, RequiredArgsConstructor, ToString, EqualsAndHashCode를 한번에 설정해주는 어노테이션으로 실무에서는 너무 무겁고 객체의 안정성을 지키기 때문에 @Data의 활용을 지양합니다.
- @Builder : 자동으로 해당 클래스에 빌더를 추가해줍니다.
- @NorgsConstructor : 파라미터가 없는 기본 생성자를 만들어줍니다.
- @AllArgsConstructor : 모든 필드 값을 파라미터로 받는 생성자를 만들어줍니다.
- @RequiredArgsConstructor : final이나 @NonNull 인 필드 값만 파라미터로 받는 생성자를 만들어줍니다.
- @EqualsAndHashCode : equals와 hashcode를 자동으로 생성해주는 어노테이션입니다.
- @Log, @Log4j, @Slf4J : 로그 기능을 사용 가능
- @Value : 불변 클래스를(Immutable Class) 생성, 모든 필드를 Private, Final 로 설정하고, Setter를 생성하지 않음(상수로 만든다.)
728x90
반응형
'Spring > spring boot' 카테고리의 다른 글
[Spring boot] @AutoConfigureMockMvc, @WebMvcTest (0) | 2024.03.12 |
---|---|
[Spring boot] H2 Console 접속 에러 (0) | 2024.01.27 |
[Spring boot] @RestController와 @Controller (0) | 2024.01.22 |
[spring boot] 스프링/스프링 부트란? (0) | 2024.01.20 |