一个项目中:只能存在一个 WebMvcConfigurationSupport (静态文件失效之坑)

一个项目中:只能存在一个 WebMvcConfigurationSupport

在一个项目中WebMvcConfigurationSupport只能存在一个,多个的时候,只有一个会生效。

静态文件访问失效原因:写配置的时候,没有注意,在网上找的代码,静态文件放行的配置,在几天前经过各种尝试,什么application.properties里面配置无效,需要通过自定义实现代码放行静态配置,

 

 改成下面的编码方式放行静态资源:都是正常的

后来下面中需要用到 IdWorker生成主键,但是在返回给前端页面时,数据精度经常丢失,很难保证精度,于是网上寻找解决办法,最终采用如下方法:

目录结构如下:

 由于这两个配置都继承了WebMvcConfigurationSupport ,只能有一个生效

 

导致原来的静态文件放行已经失效了

解决办法:

方案一:将LongToJsonConfig的继承去掉

方案二:将两个配置写在一个类里面。

很不幸的是:我采用方案一,结果静态文件好了,但是转换器转换文件失败了。

修改完成后静态文件能够正常访问了:

 

 尴尬的事情是一个接着一个,刚刚把静态文件恢复正常了,忘了测试idworker了,一测试发现不能够正常转换了,你说尴尬不尴尬啊。

 下面是两条idworker生成的数据库数据。

 rest接口测试工具测试时还是正常的:

vue前台进行访问时:

 精度还是丢失了,改用方案二:

 

 前端vue正常返回数据

打开WebMvcConfigurationSupport类,发现有一个和当前转化器配置同名方法,由于网上的找的,没有说明是配置类的重写的方法,导致判断失误。

综上所述:自定义转化器必须重写WebMvcConfigurationSupport 的 configureMessageConverters方法

 源码上面的翻译;

 

这是一个大坑,折腾了一天半,希望对遇到的朋友有所帮助~~~

 博客翻了不下100篇,都是讲的怎么放行静态资源通过自定义方法,这根本不是我想要的,最后还是应该感谢这位兄弟:一句不经意的话提醒了我,万分感谢~~~

https://blog.csdn.net/wodeshouji6/article/details/93076011

posted @ 2019-08-01 22:05  神码是浮云  阅读(3996)  评论(0编辑  收藏  举报