Notice
Recent Posts
Recent Comments
Link
개발자는 기록이 답이다
@UtilityClass란? 본문
UtilityClass는 lombok v1.16.2에서 실험적인 기능으로 도입되었다.
@UtilityClass를 사용하면, 컴파일 시점에 생성자 private 으로 만들어 주고, 모든 메서드를 static으로 만들어 준다.
package com.devkuma.tutorial.lombok;
import lombok.experimental.UtilityClass;
@UtilityClass
public class UtilityClassTutorial {
public int plus(int a, int b) {
return a + b;
}
}
위 코드는 @UtilityClass로 인해 아래와 같이 변경된다.
package com.devkuma.tutorial.lombok;
public final class UtilityClassTutorial {
public static int plus(int a, int b) {
return a + b;
}
private UtilityClassTutorial() {
throw new UnsupportedOperationException("This is a utility class and cannot be instantiated");
}
}
결론
주로 유틸리티성 클래스를 만들때 기본생성자를 private으로 사용하지 못하게 했었는데, @UtilityClass를 사용함으로써 더 명시적으로 표현 되니 자주 활용하면 좋을 것 같다.
아래 예시에서는 모든 메서드를 static으로 만들어주는 @UtiltiyClass를 사용했지만, 헷갈리지 않게 명시적으로 static을 붙여줬다.
참고 링크:
https://projectlombok.org/features/experimental/UtilityClass
'Spring > 트러블 슈팅' 카테고리의 다른 글
ResponseEntity vs @ResponseStatus 차이와 동시 사용 시 발생할 문제점 (0) | 2024.04.15 |
---|---|
비동기 쿠폰 발급 알림 기능에서 SSE를 선택한 이유 (0) | 2024.03.25 |
트러블 슈팅 - 테스트코드도 코드이므로 합성을 통해 중복을 없애자 (0) | 2024.03.16 |
트러블 슈팅 - Junit 테스트를 하다가 Lock wait timeout exceeded 에러 발생. (0) | 2024.03.13 |
트러블 슈팅 - private 메소드를 테스트하려 했지만, 문제는 테스트 코드 로직이었다. (0) | 2024.03.13 |