개발

[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

 

java:lombok:pitfall [권남]

 

kwonnam.pe.kr

관련 내용으로 참고할 블로그이다.