사용자 도구

사이트 도구


java:lombok

Lombok

Gradle-Lombok

javac 메모리 문제

Disable Field

  • AccessLevel.NONE 설정으로 특정 필드 등에 대한 자동 메소드 생성을 막을 수 있다.
    // 모든 필드에 대해 Getter/Setter를 생성하지만 age 필드의 Setter는 생성하지 않는다.
    @Data
    public class Person {
        @Setter(AccessLevel.NONE)
        private int age;
    }

Maven 설정

  • http://projectlombok.org/mavenrepo/index.html 있는 대로 설정하면 된다.
  • Java 1.6 이상에서만 작동한다. Java 코드가 1.6임을 명시하라.
    <build>
      <plugins>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <configuration>
            <source>1.6</source>
            <target>1.6</target>
            <encoding>utf-8</encoding>
            <!-- <compilerArgument>-proc:none</compilerArgument> -proc:none 사용금지 -->
          </configuration>
        </plugin>
      </plugins>
    </build>
  • 만약 JPA Annotation Processor 때문에 maven-compiler-plugin 의 compilerArgument에 -proc:none을 지정했다면 삭제하라.

주의점

  • 상호 참조하는 객체의 경우 toString() 호출시 Stack Overflow 가 발생할 수 있다. 한쪽 객체에서 다른 쪽 객체에 대해 @ToString(excluded={“propertyName”}) 형태로 출력시 제외토록 만들어야 한다.
  • @EqualsAndHashCode(of = {})로 꼭 필요한 필드만 비교하도록 처리한다.

PMD 문제 회피

  • Lombok으로 Getter/Setter를 만들면 PMD에서 Unused private field로 표시가 된다.
    @Data
    @SuppressWarnings("PMD.UnusedPrivateField")
    public class LombokUseClass {
    }
  • Signualr Field로 표시될 때는
    @Data
    @SuppressWarnings("PMD.SingularField")
    public class LombokUsedClass {
        private String field;
    }

Checkstyle 문제 회피

  • HideUtilityClassConstructor
    @SuppressWarnings("checkstyle:HideUtilityClassConstructor")

equals & hashCode Code Coverage

  • 다른 클래스를 상속할 때, 부모 클래스의 equals&hashCode를 그대로 사용하고자 하는 상황에서 Java FindBugs의 경고를 회피하려면 자식 클래스 쪽에 다음과 같이 설정한다.
    @EqualsAndHashCode(callSuper = true, of = {})
    • 여기서 of = { }를 넣지 않으면, 자식 클래스의 모든 필드가 비교 대상으로 들어가 버리게 된다.

Custom Handler

Default Value Builder & ETC

Delombok

  • 1.4 이하 Ant 태스크 : lombok.delombok.ant.DelombokTask
  • 1.6 이상 Ant 태스크 : lombok.delombok.ant.Tasks$Delombok
java/lombok.txt · 마지막으로 수정됨: 2019/06/24 16:18 저자 kwon37xi