如何使应用程序代码使用Gson并让Actuator使用Jackson?

时间:2018-07-04 04:06:46

标签: java spring-boot gson spring-boot-actuator

我了解通过使用Actuator,我们必须使用Jackson而不是Gson:

当首选json映射器是Gson时,某些执行器端点将被破坏。重现步骤:

  1. Spring Initializr,相关性:网络,执行器。生成项目
  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 Internal Server Error with log:

    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. 获取/actuator/mapping,它也会遇到另一个错误。

如何让应用程序代码使用Gson,又让执行器使用Jackson?

0 个答案:

没有答案