Lombok 어노테이션
이번 포스팅에는 Lombok에 자주 사용되는 어노테이션에 말하고자 한다.
회사에서 안드로이드 개발을 하다가 API를 직접 수정하는 일을 겪으면서 @Getter, @Setter 등 다양한 어노테이션을 보면서 어노테이션에 대한 궁금증이 생겼다.
@Getter
@Setter
@ToString
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Coffee {
private String id;
private String name;
private int price;
}
하나씩 파악해 보자
@Getter
@Setter
이것은 아마 대부분 많이 알고 있을 것이다. 접근자 / 설정자를 자동 생성해주는 어노테이션이다.
@Getter
@Setter
private String id;
user.setId("test");
String userId = user.getId();
위와 같이 특정 필드에 어노테이션을 붙여주면 getId() (boolean 타입인 경우, isId()) 와 setId() 메소드를 생성해준다.
@NoArgsConstructor
@RequiredArgsConstructor
@AllArgsConstuctor
위의 어노테이션은 생성자 자동 생성 어노테이션이다.
@NoArgsConstructor
@RequiredArgsConstructor
@AllArgsConstructor
public class Customer {
private String id;
@NonNull
private String password;
private String nickname;
}
@NoNoArgsConstructor 은 파라미터가 없는 기본 생성자를 생성해주고, @RequiredArgsConstructor 은 필드 값을 파라미터로 받는 생성자를 만들어 준다. 마지막으로 @RequiredArgsConstructor 은 클래스의 모든 final 필드나, NonNull 어노테이션이 지정된 필드에 대한 생성자를 만들어준다.
// @NoArgsConstructor
Customer customer = new Customer();
// @RequiredArgsConstructor
Customer customer = new Customer("아이디", "비밀번호");
// @AllArgsConstructor
Customer customer = new Customer("아이디", "비밀번호", "닉네임");
@ToString
ToString 메소드 자동 생성 어노테이션이다.
@ToString(exclude = "password")
public class Customer {
private String id;
private String password;
private String nickname;
}
위와 같이 exclude속성을 사용하면, 특정 필드만 toString()을 제외시킬 수도 있다.
Customer customer = new Customer("아이디", "비밀번호", "닉네임");
System.out.println(customer);
//출력값
Customer(id = 아이디, nickname = 닉네임)
마치며
직접 보고 많이 사용해 봤던 어노테이션을 정리해 보았다. Lombok을 사용하면 개발 생산성이 증가해서 자주 사용하게 되는데 댓글로 자주 사용하시는 어노테이션을 남겨주시면 시간 될 떄마다 추가해놓겠습니다. 감사합니다:)