티스토리 뷰
Lombok 사용 시 @JsonIgnore 동작안하는 문제 해결
Lombok 1.18.10
을 사용하여 공부를 하는 중 @JsonIgnore
가 동작안하는 이슈가 발생했었고, 이를 해결한 방법을 찾아봤습니다.
1. Problem
유저 정보를 전달하는 API에서 password
필드가 포함되어 있어, 이를 제외하기 위해 @JsonIgnore
애노테이션을 사용했습니다.
@Entity
@Getter @Setter
public class
...
@JsonIgnore
private String password;
...
하지만 @JsonIgnore
애노테이션이 동작하지 않아 Json 결과에 계속 출력되는 문제가 발생했었습니다.
2. Solution
이를 해결하기 위해 열심히 검색한 결과 @JsonProperty
애노테이션으로 해결하는 방법을 찾았습니다.
@JsonProperty
애노테이션을 사용하면서 access = JsonProperty.Access.WRITE_ONLY
값을 설정하면 해당 필드는 오직 쓰려는 경우(deserialize)에만 접근이 허용됩니다.
@Entity
@Getter @Setter
public class
...
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
private String password;
...
이렇게 수정하면 사용자를 생성하기 위한 요청 본문을 처리할 때는 사용되고, 응답결과를 생성할 때는 해당 필드는 제외되서 응답 본문에 표시되지 않게 됩니다.
이 문제를 해결하기 위해 import
를 바꾸거나, 특정 필드만 get
메소드를 생성해서 @JsonIgnore
를 사용하는 방법도 있었습니다. 이렇게하면 참고하는 라이브러리가 꼬이고 코드가 복잡해 질 수 있다고 생각하였습니다. 그래서 위의 방법을 선택해서 적용하였습니다.
또 다른 좋은 방법이 있다면 댓글 부탁드립니다.
3. Reference
'Programming > Java&Spring' 카테고리의 다른 글
[Java] final 키워드 (0) | 2020.05.29 |
---|---|
[Java] String, StringBuffer, StringBuilder 차이 (0) | 2020.05.26 |
Springboot jar 패키징 후 실행 방법 (0) | 2019.11.27 |
Maven과 Gradle (0) | 2019.11.23 |
[Spring] 생성자 주입을 사용해야 하는 이유, 필드인젝션이 안좋은 이유(+Lombok를 사용한 생성자 주입 방법) (0) | 2019.11.20 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 토비의스프링
- Tomcat
- AOP
- 빈팩토리
- 쉘스크립트
- 연동
- java
- gradle
- jar 실행
- IoC
- 413
- 자바
- EmbededTomcat
- apache
- shellscript
- 템플릿
- JsonProperty
- springboot
- stringbuffer
- mod_jk
- final
- DI
- lombok
- Spring
- StringBuilder
- JsonIgnore
- 빌드도구
- 애플리케이션컨텍스트
- 스프링
- 스프링프레임워크
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함