ballqs 님의 블로그
[Spring] Lombok이란? 본문
Lombok이란?
Java의 라이브러리로 Spring에서 사용되는 온갖 Entity 및 Dto(Data Transfer Object)에 사용하며 반복되는 메소드를 Annotation를 사용하여 자동으로 작성해주는 라이브러리이다. 자동으로 작성되는 것은 Getter , Setter , toString , Constructor 정도로 간략하게 알고있다.
추가 방법 2가지
1.프로젝트 생성시 의존성 주입
2.build.gradle 에 추가하는 방법
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
Memo 클래스
public class Memo {
private Long id;
private String username;
private String contents;
}
@Getter
// 컴파일되어서 생성된 코드
@Generated
public Long getId() {
return this.id;
}
@Generated
public String getUsername() {
return this.username;
}
@Generated
public String getContents() {
return this.contents;
}
@Setter ※사용안함
//컴파일되어서 생성된 코드
@Generated
public void setId(final Long id) {
this.id = id;
}
@Generated
public void setUsername(final String username) {
this.username = username;
}
@Generated
public void setContents(final String contents) {
this.contents = contents;
}
@NoArgsContructor
매개변수 없는 생성자를 자동으로 생성해준다.
// 컴파일시 자동으로 생성된 코드
@Generated
public Memo() {
}
@AllArgsContructor ※사용안함
해당 객체가 가지고 있는 모든 멤버변수를 담은 생성자를 자동으로 생성해준다.
// 컴파일시 자동으로 생성된 코드
@Generated
public Memo(Long id , String username , String contents) {
this.id = id;
this.username = username;
this.contents = contents;
}
@RequiredArgsContructor
해당 객체가 가지고 있는 final 이 붙은 멤버변수만 담은 생성자를 자동으로 생성해준다.
그렇기에 주어진 위의 Memo 클래스엔 final이 붙은 변수가 없기에 자동으로 생성안해줌!
★생성자 관련 annotation 의 access = AccessLevel에 대해
- access: 생성자의 접근 제어자를 설정하는 데 사용
- AccessLevel: 생성자의 접근 제어 수준을 지정하는 열거형
- PUBLIC: 생성자가 public 접근 제어자를 가지도록 설정
- PROTECTED: 생성자가 protected 접근 제어자를 가지도록 설정
- PACKAGE: 생성자가 패키지 프라이빗 접근 제어자(기본 접근 제어자)를 가지도록 설정
- PRIVATE: 생성자가 private 접근 제어자를 가지도록 설정
@ToString ※사용안함
// 컴파일시 자동으로 생성된 코드
@Generated
public String toString() {
return "Memo{" +
"id=" + id +
", username='" + username + '\'' +
", contents='" + contents + '\'' +
'}';
}
@Data
이 Annotation은 위에 설명한 모든 Annotation를 한꺼번에 설정해주는 어노테이션이다.
그런 만큼 사용안하는 것들까지 포함되어 설정되기에 잘 안쓰인다.
그런 만큼 혼자서 연습할때는 사용해도 되지만 협업때는 사용하지 말자!!
마무리
Spring 강의를 듣다가 lombok 이야기가 나왔는데 대충 알고 있는 부분이라 정리해보았다.
생각보다 더 많은 것들이 담겨 있었고 주로 사용하는 것과 사용해서는 안되는 것들을 색깔로 분리했다.
빨강색으로 표기한건 매우 중요한거니 자주 사용하자!
'코딩 공부 > Spring' 카테고리의 다른 글
[Spring] PasswordEncoder 암호화 및 bcrypt 암호화 (0) | 2024.08.23 |
---|---|
[Spring] Naver Open API 사용방법 (0) | 2024.08.20 |
[Spring] JWT(Json Web Tokens)란? (0) | 2024.08.19 |
[Spring] JPA(Java Persistence API)란? (0) | 2024.08.14 |
[Spring] @Valid 유효성 검사 , @ExceptionHandler , MethodArgumentNotValidException (0) | 2024.08.12 |