Я понимаю, что, используя Actuator, мы должны использовать Джексона вместо Gson:
Когда предпочтительным json mapper является Gson, некоторые конечные точки привода будут нарушены. Шаги для воспроизведения:
- Spring Initializr , зависимости: Web, Actuator. Создать проект
Редактировать pom.xml
, добавить зависимость gson
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
</dependency>
Редактировать application.properties
management.endpoints.web.exposure.include=*
spring.http.converters.preferred-json-mapper=gson
GET /actuator/beans
, возникнет 500 внутренних ошибок сервера с журналом:
WARN 14692 --- [nio-8080-exec-4] .w.s.m.s.DefaultHandlerExceptionResolver : Failed to write HTTP message: org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: Attempted to serialize java.lang.Class: org.springframework.boot.actuate.endpoint.invoker.cache.CachingOperationInvokerAdvisor. Forgot to register a type adapter?; nested exception is java.lang.UnsupportedOperationException: Attempted to serialize java.lang.Class: org.springframework.boot.actuate.endpoint.invoker.cache.CachingOperationInvokerAdvisor. Forgot to register a type adapter?
GET /actuator/mapping
, также возникнет еще одна ошибка.
Как заставить код приложения использовать Gson, и все же позволить Actuator использовать Jackson?