一个项目中:只能存在一个 WebMvcConfigurationSupport (静态文件失效之坑)
一个项目中:只能存在一个 WebMvcConfigurationSupport
在一个项目中WebMvcConfigurationSupport只能存在一个,多个的时候,只有一个会生效。
静态文件访问失效原因:写配置的时候,没有注意,在网上找的代码,静态文件放行的配置,在几天前经过各种尝试,什么application.properties里面配置无效,需要通过自定义实现代码放行静态配置,
改成下面的编码方式放行静态资源:都是正常的
后来下面中需要用到 IdWorker生成主键,但是在返回给前端页面时,数据精度经常丢失,很难保证精度,于是网上寻找解决办法,最终采用如下方法:
目录结构如下:
由于这两个配置都继承了WebMvcConfigurationSupport ,只能有一个生效
导致原来的静态文件放行已经失效了
解决办法:
方案一:将LongToJsonConfig的继承去掉
方案二:将两个配置写在一个类里面。
很不幸的是:我采用方案一,结果静态文件好了,但是转换器转换文件失败了。
修改完成后静态文件能够正常访问了:
尴尬的事情是一个接着一个,刚刚把静态文件恢复正常了,忘了测试idworker了,一测试发现不能够正常转换了,你说尴尬不尴尬啊。
下面是两条idworker生成的数据库数据。
rest接口测试工具测试时还是正常的:
vue前台进行访问时:
精度还是丢失了,改用方案二:
前端vue正常返回数据
打开WebMvcConfigurationSupport类,发现有一个和当前转化器配置同名方法,由于网上的找的,没有说明是配置类的重写的方法,导致判断失误。
综上所述:自定义转化器必须重写WebMvcConfigurationSupport 的 configureMessageConverters方法
源码上面的翻译;
这是一个大坑,折腾了一天半,希望对遇到的朋友有所帮助~~~
博客翻了不下100篇,都是讲的怎么放行静态资源通过自定义方法,这根本不是我想要的,最后还是应该感谢这位兄弟:一句不经意的话提醒了我,万分感谢~~~