记录自己将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实例变量来访问容器本身。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值