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项目必然会依赖到他。
哪位老哥通过搜索引擎搜到这里的话,留个言,我们交流交流。
时隔一年半后,我也遇到了同样的问题。🤣
时隔两年,我也碰到这个问题了,看了StackOverflow上老哥的解释,是actuator代码里直接使用了Jackson的注释(重度依赖Jackson),所以解决方案只有以Jackson为基础,同时兼容Gson里JsonElement的解析。
可以导入JsonMystique这个库来帮我们自动完成兼容工作
地址:
https://github.com/balajeetm/json-mystique
以下是问答原文地址:
https://stackoverflow.com/questions/39900183/gson-and-spring-actuator
感谢你的回复!