티스토리 뷰

반응형

 

Project Lombok 은 자동으로 에디터와 빌드툴에 연결되어 생산성을 향상시켜주는 라이브러리입니다.

getter나 equals 메소드를 다신 쓸 일이 없어지며, 어노테이션 하나로 완전한 빌더를 만들고, 자동으로 로그 변수를 만들고, 이 외에도 더 많은 것을 할 수 있습니다.

Lombok은 자바 클래스 생성시 불필요한 작업을 줄여주는 라이브러리이다.

 

라이브러리 및 설정방법은 다음 링크에서 확인 할 수 있다.

 

https://projectlombok.org/

 

Project Lombok

 

projectlombok.org

 

 

나는 빌드툴로 gradle을 사용했는데, dependencies 태그 안에 다음 항목을 넣으면 된다.

그리고 IDE에서 어노테이션 프로세스 활성화를 시켜준다. (사실 오래되서 기억이 가물가물..)

compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'

여튼 프로젝트 새로고침 후 롬복 임포트가 되면 그만.


프로젝트를 하면서

이 어노테이션이 뭔지도 모르고 때려박은 경우가 너무 많아서, 제대로 알고 쓰기위해 많이 써봤던거 위주로 남겨놓는다.

 

@NonNull - 해당 속성이 Null일 경우 컴파일 오류를 발생시킨다.

DTO 변수에 NonNull을 선언해주고, 해당 변수를 일부러 Null로 세팅했더니, 컴파일 중 오류가 발생했다.
해당 클래스를 까보면, Name4에만 Null 체크가 붙어있는걸 볼 수 있다.

(왼쪽은 디컴파일한 클래스다)

아마도 반드시 값이 들어있는 채로 이동하는 클래스여야될 경우 유용할 것 같다.

 


@Getter @Setter, 그리고 @Data - getter setter를 이 어노테이션 하나로 모두 선언해 줄 수 있다.

이 어노테이션들은 @Data로 대체 가능하다. 위의 이미지를 다시 확인해보면...

이미 getter setter가 생성되어 있다. Data 어노테이션 하나로 모두 생성된 것들이다.

(왼쪽은 디컴파일한 클래스다)

예전엔, IDE의 기능을 활용해서 getter setter를 일일이 넣어줬으나 이제는 어노테이션 하나로 해결 가능하다.


@ToString - 클래스 내의 변수를 모두 String으로 만들어준다.

생성시 들어갔던 문자열의 로그를 단 한줄로 간편히 찍어냈다.


@NoArgsConstructor, @RequiredArgsConstructor and @AllArgsConstructor

- 해당 클래스의 생성방식을 지정할 수 있다.

 

NoArgsConstructor - 매개변수가 없는 생성자를 만드는 어노테이션

AllArgsConstructor - 모든 매개변수가 있는 생성자를 만드는 어노테이션

위 2줄은 매개변수 없는 생성자, 매개변수가 있는 생성자로 초기화 했고 아래 2줄은 반대로 하니 빨간줄이 나오는 상태이다.

RequiredArgsConstructor - 데이터 전달용 Class에는 별 다를게 없고 각 서비스간 호출시 생성자 주입용으로 사용할 수 있는 어노테이션이다.

서비스 단위에다가 사용하는 것 까진 봤으나..이놈은 스프링 및 자바 기초를 좀 더 배워먹은 다음 써야될 것 같다.

더불어 Data 어노테이션 생성시 이 어노테이션도 같이 포함된다.


@Builder - 빌더 패턴을 사용할 수 있는 클래스로 바꿔준다.

빌더 패턴을 사용하기 위해서 역시 단 한줄의 어노테이션만 선언해주면 된다.

빌더 패턴을 사용하는 이유를 찾아보니

  • 필요한 데이터만 초기화 할 수 있음.
  • Optional 처럼 가독성을 높이고 유연한 소스를 작성할 수 있음

정도인것 같다. 변수가 많다면 빌더패턴으로 초기화 하는게 좀 더 편하게 여겨질떄가 있는것 같다.


 

초안은 이 정도로 하고

조금 더 깨달음을 얻으면 수정해 나가야지

기초부터 다시해야되겠는데

 

 

 

 

반응형