티스토리 뷰
728x90
SpringBoot 프로젝트에 적용하면서 알고 넘어가야 하는 Lombock 어노테이션에 대해 확실히 정리를 하려고 글을 작성해요
롬복(Lombock) 왜 쓸까?
롬복에 대해 정리를 하자면 Java에서 반복적으로 작성되는 equals, hashCode, toString , getter/setter 메서드 ex) getName , setName 등 만들어주게 되는데 생성자 관련 코드를 간결하게 만들어주는 라이브러리!!! , 사실 인텔리 제이나 이클립스 등 IDE를 사용하면 getter, setter 메서드를 쉽게 구현할 수 있다. (자동 생성이 가능하다는 의미) 이래서 필요성을 못 느꼈었다 더 좋다 롬복이... 가장 큰 이유는 유지 보수 시에 큰 도움이 된다. 필요한 클래스의 필드에 따라 일일이 getter setter를 생성하지 않으니 가독성이 훨씬 좋아지는 거 같다
getter/setter 작성
public class Product {
private String productName;
private int price;
public String getProductName() {
return productName;
}
public void setProductName(String productName) {
this.productName = productName;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
}
롬복 @Getter @Setter 사용
@Getter
@Setter
public class Product {
private String productName;
private int price;
}
- 확실히 코드 가독성이 좋아지죠?
@NoArgsConstructor @AllArgsConstructor
- @NoArgsConstructor : 기본 생성자를 자동 생성
- @AllArgsContructor : 필드 값을 모두 포함한 생성자를 자동 생성해준다.
롬복을 사용하지 않고 기본생성자와, 모든 필드를 받는 생성자를 작성한 코드
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsContructor
public class Product {
private String productName;
private int productPrice;
public Product(String productName, int productPrice) {
this.productName = productName;
this.productPrice = productPrice;
}
}
👍 롬복에 @NoArgsConstructor @AllArgsConstructor 사용 코드
- Spring Boot 프로젝트를 진행하다 보면 @NoArgsConstructor(access = AccessLevel.PROTECTED) 어노테이션 안에 access~라는 코드가 들어간 걸 볼 수 있다 이건 왜 쓸까? Entity 나 Dto를 사용하게 되면 자주 쓰이는데 기본 생성자의 접근 제어를 protected로 설정 해 논다는 뜻이다. 설정을 하면 무분별한 객체 생성에 대해 한번 더 체크할 수 있어서 사용한다
👍 Lombock @Anotation
- @RequiredArgsContructor 생성자를 자동 생성하지만, 필드 명의 위에 @NonNull로 표기된 경우만 생성자의 매개변수로 받는다
- @Data : 어노테이션들의 조합 @Data를 쓰게 되면 @Getter @Setter @ToString @EqualsAndHashCode @RequiredArgsConstructor를 쓴 것과 마찬가지이다 이 어노테이션은 웬만하면 쓰지 말자 스스로 필요한 걸 명시해주는 게 좋아요 @Data를 쓰게 되면 변하기 쉬운 (Mutable) 데이터 클래스를 만들어준다.
'Spring Boot' 카테고리의 다른 글
Spring Boot + Redis 적용 (2) | 2022.03.22 |
---|---|
JUnit5 Test Code 작성 (0) | 2021.12.17 |
Spring Boot 프로젝트 생성하기 (0) | 2021.06.27 |
Vue.js ,Springboot 로 구현하는 다중 파일 업로드 심화 (0) | 2021.05.04 |
Spring boot File upload (1) | 2021.03.09 |
댓글