사용자 도구

사이트 도구


java:lombok

문서의 이전 판입니다!


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;
    }

equals hashCode Code Coverage

Custom Handler

@Builder

  • @Builder 사용시 인자 없는 생성자를 만들려면, 모든 인자를 가진 생성자도 함께 만들어야만 한다. 따라서 다음과 같은 형태가 돼야 한다.
java/lombok.1433760840.txt.gz · 마지막으로 수정됨: 2015/06/08 19:54 저자 kwon37xi