사용자 도구

사이트 도구


java:lombok:upgrade

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
java:lombok:upgrade [2022/06/27 16:30]
kwon37xi [1.18.4 Field 에 붙은 annotation 이 setter 로 복사됨]
java:lombok:upgrade [2022/06/27 16:32] (현재)
kwon37xi
줄 21: 줄 21:
 ==== 1.18.4 Field 에 붙은 annotation 이 setter 로 복사됨 ==== ==== 1.18.4 Field 에 붙은 annotation 이 setter 로 복사됨 ====
   * field 에 붙은 annotation 이 setter 로 복사되는데, 평상시에는 이게 큰 문제가 없으나 **필드가 ''is''로 시작하는 boolean 일 경우 문제 발생소지가 있음.**   * field 에 붙은 annotation 이 setter 로 복사되는데, 평상시에는 이게 큰 문제가 없으나 **필드가 ''is''로 시작하는 boolean 일 경우 문제 발생소지가 있음.**
 +  * **애초에 boolean 필드에는 is 를 안 붙이고 true/false 를 나타낼법한 형용사를 사용하는게 좋다.**
   * 이유는 ''booean isSomething;'' 필드는 Lombok 이 **''something''** 이라는 프라퍼티로 간주하고 getter/setter 는 사실상 ''setSomething/isSomething''으로 생성되는데, 문제는 ''isSomething'' 필드를 직접 읽는 일부 라이브러리는 프라퍼티를 ''isSomething''으로 해석해버림. 그런데 getter/setter 에 ''isSomething()/setSomething()''은 Java Bean 표준상 프라머티가 ''something'' 이다.   * 이유는 ''booean isSomething;'' 필드는 Lombok 이 **''something''** 이라는 프라퍼티로 간주하고 getter/setter 는 사실상 ''setSomething/isSomething''으로 생성되는데, 문제는 ''isSomething'' 필드를 직접 읽는 일부 라이브러리는 프라퍼티를 ''isSomething''으로 해석해버림. 그런데 getter/setter 에 ''isSomething()/setSomething()''은 Java Bean 표준상 프라머티가 ''something'' 이다.
-  * 즉, 일부 라이브러리([[java:jackson|Java Jackson JSON Library]])가 필드와 getter/setter 두가지 모두로 프라퍼티를 판단할 경우 프라퍼티가 2개가 되면서 어느 것을 기준으로 개발자가 property 를 사용했는지 판단하기 힘들 +  * 즉, 일부 라이브러리([[java:jackson|Java Jackson JSON Library]])가 필드와 getter/setter 두가지 모두로 프라퍼티를 판단할 경우 프라퍼티가 2개가 되면서 어느 것을 기준으로 개발자가 property 를 사용했는지 판단하기 힘들어짐.
   * 이 때 annotation 이 필드(''isSomething'' 프라퍼티)와 메소드(''something'')에 둘다 적용되면서 두 프라퍼티 중 하나는 잘못 작동하게 된다.   * 이 때 annotation 이 필드(''isSomething'' 프라퍼티)와 메소드(''something'')에 둘다 적용되면서 두 프라퍼티 중 하나는 잘못 작동하게 된다.
   * 실제 문제 발생 예)    * 실제 문제 발생 예) 
 <code java> <code java>
 @JsonProperty("isSomething") boolean isSomething; @JsonProperty("isSomething") boolean isSomething;
-// 기존에는 이 필드와 Lombok이 생성한 ''boolean isSomething()'' 메소드 때문에 프라퍼티가 JSON 필드가 두 개로 생성됨.+// 기존에는 이 필드와 Lombok이 생성한 ''boolean isSomething()'' 메소드 때문에  
 +// 프라퍼티가 JSON 필드가 두 개로 생성됨.
 // 그런데 이 JSON을 사용하는 개발자가 something 프라퍼티를 사용했다. // 그런데 이 JSON을 사용하는 개발자가 something 프라퍼티를 사용했다.
  
java/lombok/upgrade.1656315038.txt.gz · 마지막으로 수정됨: 2022/06/27 16:30 저자 kwon37xi