来源:KL博客

http://www.kailing.pub/article/index/arcid/188.html

前言碎语

博主公司一个项目在开发中使用某些功能的时候,受限于spring低版本的限制,故索性将整个模块升级为spring boot,在这里做个记录,希望能帮助到有相同场景的朋友。

整个改造过程非常简单,耗时大概在2个小时左右,主要解决项目中的各种版本冲突,不过下面我会介绍一个神器。

老项目情况

1.项目使用spring-context作为容器,使用RabbitMQ提供RPC服务

2.spring.springframework 版本比较低,3.1.x的版本,升级后会变成4.3.x

3.项目使用maven构建

以上是项目的基本情况,针对如上情况,下面会详细描述改造过程中需要的关注点。

第一步:添加spring boot依赖

<dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.7.RELEASE</version><scope>import</scope><type>pom</type></dependency></dependencies>
</dependencyManagement>
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency>
</dependencies>

第二步:新增spring boot启动类,加载原先的xml配置

/**
* Created by kl on 2018/1/29.
* Content :Lbt-service-ext服务启动器
*/@SpringBootApplication(exclude = {RabbitAutoConfiguration.class})@ImportResource("service-context.xml")publicclassLbtServiceExtApplication{
publicstaticvoid main(String[] args) {SpringApplication application= newSpringApplication(LbtServiceExtApplication.class);application.setWebEnvironment(false);application.run(args);
}}

注意的地方:

1.排除了RabbitMQ的自动装载了,因为在xml中已经配置过了RabbitMQ的相关连接和服务信息了

2.设置了setWebEnvironment(false),标记项目为非web项目,因为只是提供RPC服务,所以不需要servlet容器。

第三步:尝试启动,排除jar冲突

这个时候可以启动main方法,看看能否启动了,一般情况下没那么容易就能启动起来,会有各种的jar冲突。我们项目从3.x到4.x,更是各种冲突。

下面介绍一个插件,破除jar冲突排除的烦恼,前提是在IDEA下开发,eclipse应该也有类似的。

插件名字:Maven Helper

可以代替mvn dependency:tree命令的使用了,这个插件可以更直观的列出项目依赖的jar,非常牛逼的是可以直接列出项目中有冲突的jar,这对找jar冲突非常有用,而且可以直接右键排除掉。

jar相关异常识别技巧:

出现NoSuchMethodError:一般都是jar冲突了

出现ClassNotFoundException:缺少相关的jar了

三步做完后,项目妥妥的跑起来了。

Spring Boot怎么识别web项目

1.spring boot会识别项目是否是web项目,如果识别到事web项目,又没有添加tomcat等容器jar,就抛异常。

2.识别的方式就是看项目是否依赖了servlet-api和spring-web。而我们项目需要spring-web相关如el等功能又不需要tomcat容器,所以可以指定为非web项目。

3.排除掉tomcat后,项目jar体积和运行时内存占用都有很大的改善。

猜你喜欢

1、GitHub 标星 3.2w!史上最全技术人员面试手册!FackBoo发起和总结

2、如何才能成为优秀的架构师?

3、从零开始搭建创业公司后台技术栈

4、程序员一般可以从什么平台接私活?

5、37岁程序员被裁,120天没找到工作,无奈去小公司,结果懵了...

6、滴滴业务中台构建实践,首次曝光

7、不认命,从10年流水线工人,到谷歌上班的程序媛,一位湖南妹子的励志故事

8、15张图看懂瞎忙和高效的区别!

Spring Boot 如何快速改造老项目?原来这么爽相关推荐

  1. Spring Boot 如何快速改造老项目?

    1 前言碎语 博主公司一个项目在开发中使用某些功能的时候,受限于spring低版本的限制,故索性将整个模块升级为spring boot,在这里做个记录,希望能帮助到有相同场景的朋友. 整个改造过程非常 ...

  2. Spring Boot:快速入门教程

    什么是Spring Boot? Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人 ...

  3. Spring Boot的快速入门

    Spring Boot的快速入门 1.导入第一个maven项目 自动生成maven项目 2.了解maven项目结构 3.启动服务 和普通maven项目结构是一样的,值得注意的是,启动服务的入口是 ![ ...

  4. 使用Spring Boot来加速Java web项目的开发

    我想,现在企业级的Java web项目应该或多或少都会使用到Spring框架的. 回首我们以前使用Spring框架的时候,我们需要首先在(如果你使用Maven的话)pom文件中增加对相关的的依赖(使用 ...

  5. 【Spring Boot】使用Spring Boot来搭建Java web项目以及开发过程

    [Spring Boot]使用Spring Boot来搭建Java web项目以及开发过程 一.Spring Boot简介 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来 ...

  6. SpringBoot进击 | 一浅出:Spring Boot简单快速上手书

    为了后继的 Spring Cloud 学习和进阶,我们需要先行了解 Spring Boot. 1.前言 1.1 认识 Spring Boot Spring Boot 是由 Pivotal 团队提供的全 ...

  7. spring boot:从零开始搭建一个项目 - day 7 springboot devtools热加载+MybatisPlus配置+kisso从入门到放弃

    spring boot:从零开始搭建一个项目 - day 7 springboot devtools热加载+MybatisPlus配置+kisso从入门到放弃 一.springboot devtool ...

  8. spring boot构建基础版web项目(一)springboot、thymeleaf控制层基础构

    原文作者:弥诺R 原文地址:http://www.minuor.com/147852147/article 转载声明:转载请注明原文地址,注意版权维护,谢谢! 写前说明 根据个人在各篇博文中看到的信息 ...

  9. phython在file同时写入两个_喜大普奔,两个开源的 Spring Boot + Vue 前后端分离项目可以在线体验了

    折腾了一周的域名备案昨天终于搞定了. 松哥第一时间想到赶紧把微人事和 V 部落部署上去,我知道很多小伙伴已经等不及了. 1. 也曾经上过线 其实这两个项目当时刚做好的时候,我就把它们部署到服务器上了, ...

  10. hbuilderx能开发vue吗_学会就能接项目!Vue + Spring Boot 实现全栈商城项目开发

    在万物互联时代,所有的品牌都需要一个甚至 N 个线上购物网站!即使是小公司也会选择在外包网站发布需求,帮自己的企业开发网络商城. 对于程序员来说,学会「开发网络商城」,可以实现从普通程序员 - 全栈工 ...

最新文章

  1. 【ACM】Uva 455
  2. Highcharts-2.3.2 网页曲线绘制工具 一淘网价格曲线
  3. tcl脚本学习十一:proc应用 (带默认参数)
  4. 为自己的网站添加RSS功能(转载)
  5. rabbitmq+redis在优化秒杀商品接口中的使用实例
  6. java程序中怎么保证多线程的运行安全_Java线程安全问答(草稿)
  7. vue 文件转换二进制_Vue利用Blob下载原生二进制数组文件
  8. 银行存款都有哪些误区,你都有踩坑吗?
  9. 微软lync 持续服务器,Lync Server 2013 Front-End服务器服务不会启动很长时间
  10. 拓端tecdat|Python信贷风控模型:梯度提升Adaboost,XGBoost,SGD, GBOOST, SVC,随机森林, KNN预测金融信贷违约支付和模型优化
  11. 组装电脑配件选择教程
  12. 怎么在计算机中添加用户账户,使用net user命令在win7电脑中添加账户的步骤
  13. c# 操作Word总结(四)——书签使用
  14. HDU2586 How far away ?(LCA模板题)
  15. 计算机软件实习每日学习打卡(6)20201227
  16. 06【连词】 Conjunction
  17. Python高级--逻辑回归、KNN回归比较
  18. java开源即时通讯软件服务端openfire源码构建
  19. 《快学Scala》第二章练习题答案+概述
  20. Seq2seq - End2end

热门文章

  1. 大快DKH大数据网络爬虫安装教程(详细图文步骤)
  2. Spring2.5整合ActiveMQ 5.2(P2P文本消息)
  3. 钉钉、微信产品大PK,基因已经决定了结果
  4. Netty5 Write和Flush事件处理过程_源码讲解
  5. 苹果mac绘图软件:AutoCAD
  6. indesign教程,了解图层
  7. 苹果Mac一定要学会的快捷键
  8. 苹果Mac桌面Dock中App icon 名称显示乱码怎么办?一个简单指令帮你解决
  9. 子序列的个数 --- 庞果网
  10. 有赞招聘小程序,有你就很赞