일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 운영체제
- 좋은코드란
- bean-validator
- 함수형프로그래밍
- DI
- 마이크로서비스패턴
- 2차원배열 정렬
- circuitbreaker
- 상속모델
- Spring
- n poem
- resilience4j
- Java
- API문서화
- GraphQL
- 주니어개발자
- Npoem
- 일급함수
- 객체비교
- circular dependency
- 쿼리셋합치기
- SpringBoot
- Not Null constraint failed
- IOC
- bulk_create
- django
- 컨트리뷰팅
- 프로젝트설정
- cannot import name
- 토이프로젝트
- Today
- Total
코딩 하는 가든
Java - Lombok 자주 쓰는 어노테이션 정리 본문
Lombok 자주 쓰는 어노테이션 정리
Lombok이란?
Java에서 자주 반복되는 코드(Getter, Setter, 생성자 등...)들을 어노테이션을 통해 자동으로 생성 해 주는 라이브러리 이다.
Lombok 적용 전
public class Post {
private String title;
private String content;
private String author;
public void setTitle(String title) {
this.title = title;
}
public void setContent(String content) {
this.content = content;
}
public void setAuthor(String author) {
this.author = author;
}
public String getTitle() {
return title;
}
public String getContent() {
return content;
}
public String getAuthor() {
return author;
}
}
Lombok 적용 후
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class Post {
private String title;
private String content;
private String author;
}
위와 같이 @Getter @Setter 어노테이션을 붙이주면 명클래스 멤버 변수들의 getter, setter 메소드를 이용 할 수 있다.
그럼 다음으로 Lombok에서 자주 쓰이는 몇 가지 어노테이션에 대해 알아보자.
(@Getter, @Setter는 위의 예시로 보였으므로 생략)
@NoArgsConstructor
public Post() {}
@NoArgsConstructor 어노테이션을 붙이면 위와같은 클래스의 기본 생성자를 만들어 준다.
@AllArgsConstucto
@AllArgsConstructor 어노테이션은 클래스의 모든 멤버변수를 받는 생성자를 만들어 준다.
@RequiredArgsConstructor
클래스의 멤버변수중 final 키워드, 혹은 lombok 어노테이션인 @NonNull 이 붙은 멤버 변수만을 받는 생성자를 만들어 준다.
@Builder
빌더패턴을 적용 시킨 방법으로 객체를 생성 할 수 있다. 빌더 패턴을 적용시킨 객체 생성 방법은 다음과 같다.
post = Post.builder()
.title(title)
.content(content)
.author(author)
.build();
@ToString
클래스의 멤버 변수들에 toString을 적용시켜 변수들을 출력 할 수 있게 해 준다.
// 위의 빌더 패턴으로 생성한 Post 객체가 있다고 가정.
// @ToString annotation이 있으면
System.out.println(post); // 결과 - > Post(title = title, content = content, author = author)
* ToString 사용시 멤버 변수 중 객체 타입이 있고, 순환 참조가 있다면 무한 루프가 발생한다!
(A class의 멤버 변수로 B class를 갖고 있고, B class의 멤버 변수로 A class를 갖고 있다면 ToString의 무한 반복이 발생 한다.)
그럴 때는 exclude 키워드를 이용해서 명시적으로 해당 필드를 제외 해 줘야 한다.
- > @ToString(exclude="classA")
@Data
위에 언급 했던 모든 어노테이션을 포함하는 어노테이션이다. 추가로 @EqualsAndHashCode 라는 어노테이션도 지원 한다.
기타 어노테이션은 추후에 정리.
'Java' 카테고리의 다른 글
Java - Runtime Exception, Checked Exception 뭐가 다를까? (0) | 2020.08.26 |
---|---|
Java - JVM, JDK, JRE에 대해 간단히 알아보자! (1) | 2020.08.16 |
Java - 자바 객체 비교하기 (equals / hashcode) (1) | 2020.08.12 |
Java - 2차원 배열 정렬 하기 (0) | 2020.03.05 |
Java - 1차원 자료구조 정렬 하기 (Array, ArrayList) (0) | 2020.03.03 |