자바 공감 세미나에 가서 lombok 이라는 프로젝트를 알게 되었는데 이 프로젝트가 상당히 흥미로운 기능을 가지고 있다.
대게 VO(Value Object) 및 도메인 객체 사용 시 getter, setter를 생성하는데 lombok 라이브러리를 추가하여 @Data 애노테이션을 달아 주면 컴파일 시점에 getter, setter, hashCode(), toString(), 생성자를 자동으로 생성해 준다.
자동으로 생성한다고 하여 소스 코드 상에 getter, setter가 생성 되는 것이 아닌 bytecode에 생성이 된다.
@Data
public class LombokTest {
private String name;
private String id;
}
사실 VO 클래스를 사용하다 보면 getter, setter가 각 필드마다 존재하여 가독성이 상당히 떨어지는 느낌을 받았는데 위와 같이 필드명만 존재하게 되면 상당히 직관적이고, 깔끔한 코드가 될 것 같다는 생각이 든다.
마지막으로 lombok 동작 원리가 상당히 궁금하다.
다운로드 받은 lombok.jar를 더블 클릭한 후 eclipse.exe 파일 지정 후 install을 하게 되면 eclipse.ini 파일에 다음과 같은 코드가 붙는다.
-javaagent:lombok.jar
-Xbootclasspath/a:lombok.jar
위 코드로 인해 컴파일 시점에 getter, setter를 자동 생성해 주는 것 같다.
하지만 어떤 구현 원리를 가지고 생성되는지는 아직 파악하지 못하였다.
지금은 일이 바쁘니 나중에 lombok 소스를 다운로드 받아 그 원리를 알아봐야 겠다.
알아두면 나중에 상당한 도움이 될 것 같다는 생각이 든다. 지금 당장 어느 곳에 활용해야 할지 생각이 나지는 않지만..;
원리에 대해서는 차후에 다시 작성하도록 하자.