롬복(Lombok)이란 애노테이션 기반으로 코드를 자동 완성해주는 라이브러리로 Getter, Setter, 생성자 코드등을 @Getter, @Setter, @RequiredArgsConstructor 와 같은 애노테이션으로 사용한다.

 

반복되는 코드를 줄여 생산성, 가독성 여러 면에서 엄청 편리해서 기본으로 깔고 가는 라이브러리인데 @Setter나 @Setter외 여러 애노테이션이 포함된 @Data의 경우에는 의도치 않는 값의 변경 등 안정성 면에서 권장하지 않아 사용하지 않았다.

 

 

[Java] Lombok이란? 및 Lombok 활용법

Java 언어를 이용해 개발을 하다 보면 기계적으로 작성해야 하는 코드들이 상당히 많다. 이번에는 기계적인 코드 작성을 자동화하여 코드 다이어트를 해주는 Java 필수 라이브러리 Lombok에 대해 알

mangkyu.tistory.com

 

@RequiredArgsConstructor 애노테이션은 final 또는 @NotNull이 붙은 필드에 대해 생성자를 생성해줘서 의존성 주입을 위해 항상 사용해왔다. (스프링은 특정 빈에 생성자가 하나만 있고, 생성자의 파라미터 타입이 빈으로 등록 가능한 경우 @Autowired 애노테이션이 없어도 의존성 주입이 가능하다.)

 

하지만 @AllArgsConstructor, @RequiredArgsConstructor 를 사용할 때 선언된 필드의 순서를 바꾸는 경우 자동으로 생성되는 생성자의 파라미터 순서도 바뀌어 버리기 때문에 의도치 않은 문제가 발생할 수 있다. 실제로 코드를 짜다 보면 필드 순서가 맘에 안 들어서 바꿀 때가 많은데 이런 위험은 생각을 못하고 있었다.

 

테스트 코드를 작성하면서도 여러모로 빌더 패턴의 유용함을 많이 느끼고 있는데 생성자를 직접 만들고 @Builder 애노테이션을 사용하는 방식으로 코드를 짜는 것이 좋을 것 같다.

 

 

 

java:lombok:pitfall [권남]

 

kwonnam.pe.kr

 

+ Recent posts