摘要:暮夏八月是一年中最好的時節,近近地看到了涼爽的希望,卻還能享用暖熱的余溫。距離發布已經年有余,我們嘗試在這個夏天把這只已經獨自在外游蕩了年的野貓裝入春天的長靴。總結以上就是從遷移到所需要的所有改動。
暮夏八月是一年中最好的時節,近近地看到了涼爽的希望,卻還能享用暖熱的余溫。距離Phil Webb發布Spring Boot已經4年有余,我們嘗試在這個夏天把這只已經獨自在外游蕩了19年的野貓Tomcat裝入春天的長靴。
從零開始安裝Spring Boot項目,使用內嵌的Tomcat引擎是比較容易的事情,各種中文教程已經數不勝數,那不是我們要談論的話題。在這里我們要做的是以最小的代價把一個已有的Tomcat項目改造為Spring Boot項目,以實現我們微服務改造的第一步。
對pom.xml的修改 添加spring-boot-maven-plugin一般來說,在每一個pom.xml的結尾,都會有一個build段落,在這里添加spring-boot-maven-plugin是必經的第一個步驟,添加完之后的完整段落如下:
my-app org.apache.maven.plugins maven-compiler-plugin 3.5.1 1.8 org.springframework.boot spring-boot-maven-plugin -Xmx64m
在這里,我們特別添加了一個configuration段落,設置-Xmx為64m,這是因為Tomcat缺省會分配物理內存的1/4為堆內存,這樣我們一臺電腦最多只能運行4個Tomcat服務,內存就不夠用了。在這里我們把heap size的最大尺寸設置為只用64m,可以有效節省內存,最多會引起垃圾回收頻繁一些而已,這之間的平衡可以自己掌握。
添加spring-boot-starter-parentSpring Boot是一個非常獨立的父母,它認為所有與spring有關的依賴都是它的孩子,所以我們必須引入spring-boot-starter-parent,讓它來管理所有姓spring的孩子。
org.springframework.boot spring-boot-starter-parent 2.0.4.RELEASE
由于Spring Boot自己管理所有spring依賴,你還需要把原先加在pom.xml里的所有與spring有關的依賴(以及所有spring想要管理的依賴,例如com.fasterxml.jackson.core)全部刪掉,否則會造成版本沖突。比如這樣:
Spring Boot唯一需要我們手工添加的依賴只有一個:
org.springframework.boot spring-boot-starter-web
有了這個依賴以后,Spring Boot項目啟動的時候就會內嵌一個Tomcat服務器。同時Spring Boot帶來的另外一個好處是:我們從此不必再依賴Tomcat,如果我們想換成其它引擎,只需要加上新引擎,排除掉Tomcat就可以了,假設我們想換成Undertow,只需要這樣設置:
主程序入口 Application.javaorg.springframework.boot spring-boot-starter-undertow org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-tomcat
傳統的Tomcat應用是讓Tomcat先啟動,然后加載我們的war文件,改造之后是Spring Boot先啟動,由Spring Boot來加載Tomcat,所以我們需要給我們的應用里增加一個Application.java文件:
package com.domain.app; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }application.properties
傳統的Tomcat是把所有配置項放在webapp/WEB-INF/web.xml里來管理的,Spring Boot不使用web.xml文件,它把所有配置項都放在resources/application.properties文件中,例如:
server.port=8090 server.servlet.context-path=/app運行
至此為止,就已經完成了從Tomcat到Spring Boot的遷移。我們可以通過maven運行Spring Boot來看一下效果:
mvn spring-boot:run添加dubbo
如果以前的項目是由dubbo完成的,暫時還不想破壞原有架構,可以把dubbo集成到Spring Boot中來。
pom.xml在pom.xml中添加dubbo-spring-boot-starter依賴:
com.alibaba.spring.boot dubbo-spring-boot-starter 1.0.2
這個dubbo-spring-boot-starter的最高版本是2.0.0,并且即便這個2.0.0也已經被廢棄,更高的版本遷移到了incubator-dubbo-spring-boot-project上,但是由于我用的是dubbo較低的版本2.5.3,使用了比較方便的
Dubbo從2.5.7以后廢棄了
在pom.xml中添加對dubbo的依賴后,還需要在Application.java中添加dubbo的自動配置功能:
import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration; @SpringBootApplication @EnableDubboConfigurationapplication.properties
然后在application.properties文件中添加dubbo的配置項:
spring.dubbo.appname=my-app spring.dubbo.registry=zookeeper://myip.mydomain.com:2181
這個配置項功能很弱,但勉強夠用。雖然它會造成一些很難看的日志:
[2018-08-26 12:21:25] WARN - [DUBBO] ReferenceConfig(null) is not DESTROYED when FINALIZE, dubbo version: 2.5.3, current host: 192.168.1.2
但是鑒于這個插件已經被廢棄了,不會有人來解決這個問題,只能勉強這么用了。
總結以上就是從Tomcat遷移到Spring Boot所需要的所有改動。總計只是修改了pom.xml一個文件,新增了Application.java和application.properties兩個文件,新增代碼行數不超過20行,整個遷移過程還是比較簡便的。
當然,僅僅在代碼層面遷移到Spring Boot不是最終目的,我們還需要在pom.xml文件中把
更進一步,當以Spring Boot方式啟動的微服務越來越多的時候,服務治理將成為一個難題,這時候就需要考慮引入Eureka或者甚至Kubernetes進行服務治理,那將是另外一個大話題了。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/76871.html
摘要:除了,還有十余種,有的是特定操作,比如轉儲內存日志有的是信息展示,比如顯示應用健康狀態。 showImg(http://ww1.sinaimg.cn/large/006tNc79gy1g5qb2coyfoj30u00k0tan.jpg); 前言 隨著線上應用逐步采用 SpringBoot 構建,SpringBoot應用實例越來多,當線上某個應用需要升級部署時,常常簡單粗暴地使用 kil...
摘要:現在這還是一個空的項目,我們可以在標簽中添加我們需要的依賴,例如添加的依賴。修改我們的配置如下目前我們的這個項目還沒有導入任何,這點可以通過執行命令確定。 本篇文章是SpringBoot最入門的介紹。我們不借助任何額外的工具,從無到有創建一個Spring Boot的web項目,并運行這個項目。 項目構建 歸根結底,Spring Boot就只是一個框架,幾個jar而已,沒什么神奇的。但使...
摘要:初衷看了一下相關的書籍,創建一個的應用,是那么的簡單。首先,我們只是創建一個簡單的并不打算使用默認的,而是使用傳統的。在下創建目錄并且在目錄下新建,內容為頁面。如果是在內置的的情況下,應用會自動重啟。 初衷 看了一下spring-boot相關的書籍,創建一個hello world!的應用,是那么的簡單。然而,自己動手,卻很不一樣。 首先,我們只是創建一個簡單的hello world!并...
摘要:為什么整合后必須通過方式啟動背景在整合這篇文章中,我們用了兩種啟動方式方法啟動測試發現,通過啟動能夠正常渲染頁面,而通過方法啟動無法渲染,本文分析下原因。通過來啟動對應的服務器。 為什么整合jsp后必須通過spring-boot:run方式啟動? 背景 在Spring Boot - 整合Jsp/FreeMarker這篇文章中,我們用了兩種啟動方式 mvn clean spring-b...
閱讀 2663·2021-11-23 09:51
閱讀 1649·2021-11-22 13:54
閱讀 2789·2021-11-18 10:02
閱讀 943·2021-08-16 10:57
閱讀 3559·2021-08-03 14:03
閱讀 1879·2019-08-30 15:54
閱讀 3534·2019-08-23 14:39
閱讀 606·2019-08-23 14:26