반응형
objectMapper를 사용하면 보통 다음처럼 @JsonIgnore 처리를 하여 response 값에서 제외 처리를 하게 된다.
public class SomeDomain {
private int someFieldA;
@JsonIgnore
private int someFieldB;
@JsonIgnore
private String someFieldC;
}
전체 공통으로 @JsonIgnore를 사용하지 않고 새로 추가하는 요청에 대해 특정 필드를 숨기고 싶은 경우가 있다.
simpleModule로 deserializer를 등록하는 건 전체 공통 적용인 것 같고 @JsonView를 @ResponseBody에 사용하려면 기존에 사용하던 전 구간에 @JsonView를 지정해야 하는 문제가 있다. (exclude 기능을 하는 json view annotation을 찾지 못하였다..)
@JsonFilter의 사용도 비슷한 이유로 쓰기 애매했다.
결국 아래처럼 사용하였다.
@Controller
@RequestMapping(/** mapping 설정 **/)
public class SomeController {
@Autowired
private Jackson2ObjectMapperBuilder builder;
private ObjectMapper objectMapper;
public void postConstruct() {
objectMapper = builder.createXmlMapper(false).build();
objectMapper.addMixIn(SomeDomain.class, SomeDomainMixIn.class);
}
@JsonIgnoreProperties({ "someFieldB", "someFieldC" })
class SomeDomainMixIn {}
@GetMapping("/someRequest")
public String someRequest() {
var someDomain = // someDomain 획득
return objectMapper.writeValueAsString(someDomain);
}
}
objectMapper를 따로 사용하고 응답을 String으로 반환하면서 mixin으로 제외할 필드를 지정하였다.
응답을 String으로 바꿔서 사용하고 objectMapper를 따로 지정하는 게 그리 좋은 방법 같지 않은데 더 나은 방법을 찾지 못하였다.
반응형
'Study > Java' 카테고리의 다른 글
vaadin 사용해 보기 (0) | 2023.09.19 |
---|---|
[troubleshooting] Spring Boot 테스트 코드 실행 시 java.lang.NoClassDefFoundError: io/micrometer/context/ThreadLocalAccessor 에러 (0) | 2023.08.18 |
annotation 을 가진 class 검색에 reflection util 대신 Spring TypeFilter 사용으로 대체하기 (0) | 2023.07.31 |
Spring Boot Condition Evaluation Report 확인하기 (0) | 2023.07.16 |
STS Newer patch version of Spring Boot available warning disable 처리하기 (0) | 2023.07.10 |
Spring Cloud DataFlow 사용해 보기 (0) | 2023.07.03 |
[troubleshooting] Spring Boot 3.1.0에서 hibernate cannot be cast 오류 발생 (0) | 2023.06.21 |
STS 4.19.0 Release 소식 및 Windows 11에서 Windows Defender 예외 처리 하기 (0) | 2023.06.16 |
Spring JDBC AbstractRoutingDataSource, DelegatingDataSource 사용해 보기 (0) | 2023.06.15 |
Spring Boot 프로젝트 properties 암복호화 처리 구현하기 (1) | 2023.06.11 |