javascript
Spring Boot 如何快速改造老项目?
1 前言碎語
博主公司一個(gè)項(xiàng)目在開發(fā)中使用某些功能的時(shí)候,受限于spring低版本的限制,故索性將整個(gè)模塊升級(jí)為spring boot,在這里做個(gè)記錄,希望能幫助到有相同場(chǎng)景的朋友。
整個(gè)改造過程非常簡(jiǎn)單,耗時(shí)大概在2個(gè)小時(shí)左右,主要解決項(xiàng)目中的各種版本沖突,不過下面我會(huì)介紹一個(gè)神器。
2 老項(xiàng)目情況
1.項(xiàng)目使用spring-context作為容器,使用RabbitMQ提供RPC服務(wù)
2.spring.springframework 版本比較低,3.1.x的版本,升級(jí)后會(huì)變成4.3.x
3.項(xiàng)目使用maven構(gòu)建
以上是項(xiàng)目的基本情況,針對(duì)如上情況,下面會(huì)詳細(xì)描述改造過程中需要的關(guān)注點(diǎn)。
第一步:添加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啟動(dòng)類,加載原先的xml配置
/** * Created by kl on 2018/1/29. * Content :Lbt-service-ext服務(wù)啟動(dòng)器 */@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的自動(dòng)裝載了,因?yàn)樵趚ml中已經(jīng)配置過了RabbitMQ的相關(guān)連接和服務(wù)信息了
2.設(shè)置了setWebEnvironment(false),標(biāo)記項(xiàng)目為非web項(xiàng)目,因?yàn)橹皇翘峁㏑PC服務(wù),所以不需要servlet容器。
第三步:嘗試啟動(dòng),排除jar沖突
這個(gè)時(shí)候可以啟動(dòng)main方法,看看能否啟動(dòng)了,一般情況下沒那么容易就能啟動(dòng)起來,會(huì)有各種的jar沖突。我們項(xiàng)目從3.x到4.x,更是各種沖突。
下面介紹一個(gè)插件,破除jar沖突排除的煩惱,前提是在IDEA下開發(fā),eclipse應(yīng)該也有類似的。
插件名字:Maven Helper
可以代替mvn dependency:tree命令的使用了,這個(gè)插件可以更直觀的列出項(xiàng)目依賴的jar,非常牛逼的是可以直接列出項(xiàng)目中有沖突的jar,這對(duì)找jar沖突非常有用,而且可以直接右鍵排除掉。
jar相關(guān)異常識(shí)別技巧:
出現(xiàn)NoSuchMethodError:一般都是jar沖突了
出現(xiàn)ClassNotFoundException:缺少相關(guān)的jar了
三步做完后,項(xiàng)目妥妥的跑起來了。
3 Spring Boot怎么識(shí)別web項(xiàng)目
1.spring boot會(huì)識(shí)別項(xiàng)目是否是web項(xiàng)目,如果識(shí)別到事web項(xiàng)目,又沒有添加tomcat等容器jar,就拋異常。
2.識(shí)別的方式就是看項(xiàng)目是否依賴了servlet-api和spring-web。而我們項(xiàng)目需要spring-web相關(guān)如el等功能又不需要tomcat容器,所以可以指定為非web項(xiàng)目。
3.排除掉tomcat后,項(xiàng)目jar體積和運(yùn)行時(shí)內(nèi)存占用都有很大的改善。
來源:KL博客
http://www.kailing.pub/article/index/arcid/188.html
總結(jié)
以上是生活随笔為你收集整理的Spring Boot 如何快速改造老项目?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 由 HashMap 引发的一个面试10连
- 下一篇: Spring事务失效的 8 大原因,这次