본문 바로가기

제안&정리

[JAVA] IntelliJ로 class -> record 변환

record 적용 배경

JAVA14 버전부터 포함된 record를 새롭게 시작한 프로젝트에서 JAVA 17을 사용하면서 사용하게 되었습니다.

 

JAVA 17을 사용한다고 처음부터 사용했던 것은 아니지만 JAVA 17을 사용하는 김에 잘 활용하기 위해

기존 버전이었던 11부터 17까지의 새로운 기능들을 확인하고 적용하게 되었습니다.

 

새롭게 시작한 프로젝트는 BFF 프로젝트로 내부 서비스로부터 복잡한 응답 모델을 가져와서 가공 후 FE에 보여주게 되는데

복잡한 내부 서비스의 응답 모델과 FE에 내려주는 응답 모델을 record를 사용하기 적절했습니다.

record 장점

  • 필드 선언을 메서드 파라미터 처럼 하고 대부분의 lombok 어노테이션을 사용하지 않아도 되어 코드 라인수가 1/3 수준이 된다.
  • record에서 다 처리해주기 때문에 toString, equals, hashcode에 대한 걱정을 할 필요가 없다.
  • getter를 getFoo()가 아닌 foo() 형태로 예쁘게 사용할 수 있다.

intellij로 변환하기

intellij에서 기본적으로 record로 변환하기 적절한 class에 대해 record로 변환하기를 추천하고 변환을 해 주는 기능을 제공합니다.

기존 class에 대해 아래와 같은 절차를 밟으면 됩니다.

  1. 모든 필드에 final 추가
  2. lombok을 사용하고 있었다면 @Getter를 제외한 모든 어노테이션 제거
    1. 여기까지 하면 클래스명에 record로 변환하기가 뜸
    2. Getter를 없애지 않는 이유는 기존 Getter들이 이하 과정에서 자연스럽게 변화되도록 하기 위함.
  3. 클래스명으로 커서 옮기고 record로 변환
  4. 불필요한 @Getter 어노테이션 제거