thdwoqor / stable-coin-checker

0 stars 0 forks source link

@JsonIgnoreProperties 가 동작하지 않는 문제 해결 #14

Closed thdwoqor closed 2 weeks ago

thdwoqor commented 2 weeks ago

문제

결론으로 @JsonIgnoreProperties 사용하는 방식을 선택했지만 정상적으로 동작하지않았다.

원인

https://github.com/FasterXML/jackson-databind/issues/3067 https://github.com/spring-projects/spring-framework/issues/16510 https://github.com/spring-projects/spring-framework/issues/19575

스프링에서는 ObjectMapper를 재정의해서 사용하는데 기본적으로 DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES=false로 사용한다. 하지만 해당 설정을 사용할 경우 @JsonIgnoreProperties(ignoreUnknown = false) 설정이 동작하지 않는다.

해결

DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES 설정을 true로 변경할 수도 있지만, 이렇게 하면 응답 형식을 정확히 맞춰야 하는 불편함이 생깁니다. 이를 해결하기 위해 WebSocketHandler에서 분기 처리를 통해 문제를 해결했습니다.

private boolean validate(final UpbitWebSocketResponse response) {
    return response != null &&
            response.getCode() != null &&
            response.getTimestamp() != null &&
            response.getTradePrice() != null;
}