lombok사용중 필드명 바꿨더니 큰일이....!

섭정이·2025년 3월 27일
post-thumbnail

Lombok 사용 시 필드명 변경하면 메소드명이 같이 바뀌는 문제 해결

문제 상황

프로젝트에서 Lombok을 사용 중이고, 다음과 같이 @Getter로 필드에 접근자를 자동 생성하고 있었다.

@Getter
private String Username;

프로젝트를 진행하던 중 대문자로 들어가있는 필드명을 발견했고 가볍게 소문자로 바꿨다. 그런데 해당 게터를 쓰는 부분 모두에서 에러가 나왔고 이게 무슨일인가 확인해 봤다.


자료 수집

알고보니 Lombok의 @Getter, @Setter필드명을 기반으로 자동으로 메소드 이름을 생성한다.
→ 필드명이 바뀌면 메소드명도 같이 바뀌기 떄문에 문제가 발생했다는 사실을 알았다.


해결 방법

해당 필드에 대해서만 Lombok의 자동 메소드 생성을 끄고, 직접 원하는 메소드 이름으로 정의한다.

@Getter(AccessLevel.NONE)
private String Username;

public String getUserName() {
    return username;
}

이렇게 하면 필드명을 name, nickname, userDisplayName 등으로 바꿔도 getUserName() 메소드 이름은 유지됨.


이러면 그냥 게터 직접 만드는거랑 다를게 없지 않을까..?

해당 필드만 보면 Lombok 없이 수동 getter 쓴 것과 같지만,
이렇게 적용하면, 혼합 전략을 사용할 수 있다.
사실 근데 그럴일은 거의 없을 것 같긴 하다.

예시:

@Getter
public class User {
    private String id;  // → getId()

    @Getter(AccessLevel.NONE)
    private String name;

    public String getUserName() {
        return name;
    }
}

id는 Lombok 자동 처리, name만 메소드 이름 고정


정리

방법설명장점단점
Lombok 자동@Getter, @Setter 사용코드 간결, 빠름필드명 바꾸면 메소드명도 바뀜
수동 getter직접 메소드 정의메소드명 고정 가능귀찮음
혼합 전략 (추천)Lombok + 필요한 곳만 수동 처리유연함, 유지보수 편리규칙 필요

결론

  • 필드명을 바꾸면 Lombok의 메소드명도 같이 바뀜 → 리팩토링 시 영향
  • 해당 필드만 수동 getter로 고정 메소드명을 사용
  • 전체 구조에 맞게 Lombok을 유연하게 적용하는 혼합 전략 추천

    사실 그냥 롬복 잘 사용하고 필드명 실수 안하면 되는 문제였다. 다음부턴 더 꼼꼼히 보도록..!

profile
우직하게

0개의 댓글