Actuator不支持Gson?

Spring Boot提供了Actuator,用来监控和管理运行中的系统,添加一句依赖之后,就可以在/actuator/health和/actuator/info下查看信息了。

Gson是谷歌提供的一个json类库,作为一个Android开发,自然是选择用他。Spring Boot是支持Gson的,只需要在build.gradle添加一句依赖,在application.properties添加一句配置就可以用了。

然而,他俩同时用会出问题。Actuator为了安全,默认的暴露出来的路径很少,只有上面说到的两个,其实有用的信息还有很多,可以通过配置将所有的路径都打开。当我想通过/actuator/beans查看所有的bean的时候,报错了,提示缺少type adapter。

因为Actuator使用的是Jackson,所以配置了使用Gson之后会出现问题。其实配置了Gson了之后,Jackson的支持还是存在的,只不过首选是Gson。至于Actuator为啥会出现问题,肯定是哪里没有配置好,Spring Boot的自动配置一定是哪里出了问题。

在网上搜了搜,感觉好像没什么人遇到过这个问题🤣。在SO上有一个提问跟我的情况完全相同,是半年多之前提问的,没有回答。我看这个一时半会儿不会有什么比较完善的解答,看源码写workaround还是算了,反正我没有上线的项目,那就只有一个解决方法 ——- 换Jackson😅。他是官方默认的json库,用Spring Boot写Web项目必然会依赖到他。

哪位老哥通过搜索引擎搜到这里的话,留个言,我们交流交流。

关于 “Actuator不支持Gson?” 的 3 个意见

  1. 时隔两年,我也碰到这个问题了,看了StackOverflow上老哥的解释,是actuator代码里直接使用了Jackson的注释(重度依赖Jackson),所以解决方案只有以Jackson为基础,同时兼容Gson里JsonElement的解析。

    可以导入JsonMystique这个库来帮我们自动完成兼容工作
    地址:
    https://github.com/balajeetm/json-mystique

    以下是问答原文地址:
    https://stackoverflow.com/questions/39900183/gson-and-spring-actuator

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注