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

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

记录自己将spring传统项目改造为springboot项目所遇到的问题.._第1张图片

原因:

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

解决办法:

tomcat的版本降到8.0.29

       8.0.29

 

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

记录自己将spring传统项目改造为springboot项目所遇到的问题.._第2张图片

 原因:

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

解决:

       mybatisjar包版本降为3.4.1版本

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

解决:网上说的依赖

<dependency>

            <groupId>org.springframework.bootgroupId>

            <artifactId>spring-boot-devtoolsartifactId>

            <optional>trueoptional>

 dependency>

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

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

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

也可以修改热键

记录自己将spring传统项目改造为springboot项目所遇到的问题.._第3张图片

问题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传统项目改造为springboot项目所遇到的问题.._第4张图片

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

你可能感兴趣的:(记录自己将spring传统项目改造为springboot项目所遇到的问题..)