记录自己将spring传统项目改造为springboot项目所遇到的问题.. - Go语言中文社区

记录自己将spring传统项目改造为springboot项目所遇到的问题..


问题1:启动时jar包找不到

原因:

tomcat在8.5.2 以后的版,修改了加载jar的方式,8.5.2 版本会解析jar中MANIFEST.MF文件,当该文件包含class-path属性时,会把该属性对象值,解析成需要加载的jar给加载进来。

解决办法:

tomcat的版本降到8.0.29

       <tomcat.version>8.0.29</tomcat.version>

 

问题2:持久层获取数据出错

 原因:

Mybatis的jar包,3.4.1之后不再支持#{0}作为占位符,而是使用#{arg0}作为参数占位符。

解决:

       mybatisjar包版本降为3.4.1版本

问题3:关于springboot 热部署问题

解决:网上说的依赖

<dependency>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-devtools</artifactId>

            <optional>true</optional>

 </dependency>

像是一个热启动,每次保存就会重新启动项目,

热部署每次将会替换修改编译后的文件。

经查证: springboot官网说,对于idea使用ctrl+F9的方式可以实现热部署

也可以修改热键

问题4:springboot文件上传

使用以上形式始终拿不到文件对象

原因:

spring-boot自带的org.springframework.web.multipart.MultipartFile 和Multipart产生冲突,

如果同时使用了MultipartResolver 和ServletFileUpload,就会在iter.hasNext()返回false.然后整个循环就跳出去了。整个问题产生的原因是Spring框架先调用了MultipartResolver 来处理http multi-part的请求。这里http multipart的请求已经消耗掉。后面又交给ServletFileUpload ,那么ServletFileUpload就获取不到相应的multi-part请求。因此将multipartResolve配置去除,问题就解决了。

解决:取消关于上传文件的配置(两种方式都去掉)

 

问题5:ApplicationContextAware接口

    Spring容器会检测容器中的所有Bean,如果发现某个Bean实现了ApplicationContextAware接口,Spring容器会在创建该Bean之后,自动调用该BeansetApplicationContextAware()方法,调用该方法时,会将容器本身作为参数传给该方法,该方法中的实现部分将Spring传入的参数(容器本身)赋给该类对象的applicationContext实例变量,因此接下来可以通过该applicationContext实例变量来访问容器本身。

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/subbao/article/details/88690569
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2021-06-12 21:00:58
  • 阅读 ( 674 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢