Как заставить код приложения использовать Gson и позволить Actuator использовать Jackson? - PullRequest
0 голосов
/ 04 июля 2018

Я понимаю, что, используя Actuator, мы должны использовать Джексона вместо Gson:

Когда предпочтительным json mapper является Gson, некоторые конечные точки привода будут нарушены. Шаги для воспроизведения:

  1. Spring Initializr , зависимости: Web, Actuator. Создать проект
  2. Редактировать pom.xml, добавить зависимость gson

    <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
    </dependency>
    
  3. Редактировать application.properties

    management.endpoints.web.exposure.include=*
    spring.http.converters.preferred-json-mapper=gson
    
  4. 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?
    
  5. GET /actuator/mapping, также возникнет еще одна ошибка.

Как заставить код приложения использовать Gson, и все же позволить Actuator использовать Jackson?

...