개발
[Lombok] @Data 사용법
kyunge_ev
2023. 5. 31. 23:06
@Data 어노테이션에 포함된 기능은
@Getter / @Setter / @ToString / @EqualsAndHashCode / @RequiredArgsConstructor 이다.
많은 기능을 포함한 만큼 @Data 어노테이션 하나로 코드를 대폭 줄일 수 있다.
하지만, @Data를 사용할 때 몇가지 주의할 점이 있다.
@Data 어노테이션은
callSuper / includeFieldName / exclude와 같은 파라미터와는 같이 사용할 수 없다.
해당 파라미터를 이용할 경우엔 개별 어노테이션을 따로 다 명시해주어야한다.
/**
* @see Getter
* @see Setter
* @see RequiredArgsConstructor
* @see ToString
* @see EqualsAndHashCode
* @see lombok.Value
*/
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.SOURCE)
public @interface Data {
/**
* If you specify a static constructor name, then the generated constructor will be private, and
* instead a static factory method is created that other classes can use to create instances.
* We suggest the name: "of", like so:
*
* <pre>
* public @Data(staticConstructor = "of") class Point { final int x, y; }
* </pre>
*
* Default: No static constructor, instead the normal constructor is public.
*
* @return Name of static 'constructor' method to generate (blank = generate a normal constructor).
*/
String staticConstructor() default "";
}
기존 프로젝트에선 @Data 어노테이션을 많이 사용하였는데 리팩토링하여 꼭 필요한 어노테이션만 사용하기로 했다.
📌 롬복은 코드의 간결성을 가져다 주는 만큼 사용하는 데 주의할 점이 많다.
https://kwonnam.pe.kr/wiki/java/lombok/pitfall#google_vignette
관련 내용으로 참고할 블로그이다.