天天看點

jdk1.6環境下struts2改spring boot方案

公司目前上線的兩個項目都是比較老的,java版本是jdk1.6,mvc架構使用的是strus2。

随着不久前struts2官方公布新的安全漏洞,我們也不得不做出相應的整改措施,除了之前博文中所說把struts2改為spring mvc外,還把其中部分項目的struts2改成了spring boot,由于各種原因,上司安排由我給出相應的整改方案,然後其他同僚參考。

spring boot中内嵌tomcat伺服器,不需要再專門對tomcat軟體進行維護,同時遵循“約定優于配置”,如果整個項目都改成spring boot的話,将會少很多配置檔案,不過我們隻是改struts2涉及的地方,相對而言改動實際并不是很大。

要給出可行方案,自然需要實際操作成功整合,以下是整個整改過程:

一、使用maven建立springboot項目,spring boot版本選擇為1.4.3,自動依賴的spring版本是4.3.5,選擇了web啟動依賴。

需要說明的是,我這裡建立項目時使用了eclipse中的spring tools插件,目前能建立的最低版本是1.4.7,然後預設導入的spring相關的jar包是4.3.9。

但是應上邊上司要求,目前不能更新jdk,導緻4.3.9的spring在啟動項目時抛出jdk版本不相容的異常,于是手動把spring boot的版本改為了1.4.3,預設導入的spring版本降為了4.3.5。

這種方式建立項目後,maven的pom.xml檔案主要的幾個内容如下:

二、增加jdk1.6和tomcat7相關配置

spring boot項目預設使用的是jdk1.7和tomcat8.5,官方也建議使用1.7以上的jdk,但由于我們暫時不能更新,是以隻能使用jdk1.6,這就需要更改預設的配置,把jdk改為支援1.6,把tomcat改為tomcat7,根據spring boot的官方說明,需要在pom.xml檔案中加入一些配置:

首先是properties中加入如下配置

其次是dependences中加入如下配置

三、克隆項目代碼和配置

使用struts2,或者說正常的web項目都有web.xml檔案,而spring boot不需要web.xml檔案,是以拷貝的時候,web.xml就可以略過。

其他部分,不論是具體代碼還是配置檔案,都按原來的層級結構原封不動的拷過來,以期盡可能小的改動,改動越小,出錯幾率越低。

四、根據編譯報錯的地方補全jar包

原本的項目沒有使用maven,所依賴的jar包都是放在lib檔案夾下,也就是全部手動導入,而spring boot項目本身就使用了maven建立,是以所有依賴包也都已maven配置的方式導入。

在初始spring boot項目下考入之前整個項目代碼,自然就會缺少相關的jar包進而編譯出錯,此時首要任務便是根據eclipse工具中醒目的錯誤提示依次補全相關依賴包。

五、改造struts2的action為spring的controller

原本提供給外部的控制層是繼承了struts2的actionsupport類,然後再在struts2的配置檔案中配置url,改為spring boot方式後,web控制器這部分實際上就是spring mvc,是以需要把原本的action改為spring mvc的方式,也就是加上spring mvc控制器相關的注解,如@controller和@requestmapping。

與此同時,struts2相關的jar包和xml配置檔案自然也都不在需要了。

六、添加配置檔案加載類

原本啟動項目時tomcat需要加載web.xml檔案,同時在web.xml中配置了spring初始檔案的加載,spring boot項目中沒有了web.xml,也不再依賴外部tomcat,是以需要采用其他措施在啟動時加載spring初始檔案,也就是使用spring boot的檔案加載類

這裡有一個需要注意的細節是:spring boot預設隻掃描spring boot啟動類同包以及啟動類所在包的子包下的内容,是以如果想要不手動配置掃描路徑的話,就需要把這個類放在啟動類所在包或子包下。

如果沒有放在啟動類所在包或子包下,就需要在啟動類上加入@componentscan注解指定需要掃描的包。

七、解決運作時的異常

上邊已經借助eclipse的提示解決了編譯錯誤,再配置好相應的啟動配置檔案後,就可以啟動項目,根據啟動過程抛出的異常再做具體的處理,例如spring裝配bean的過程中找不到對應的類。

當解決完啟動的一些異常之後,項目看起來便像是成功改造了,但實際上隻是看起來而已,我們還需要浏覽器通路配置的url,看運作時是否還有異常,例如具體的類中注入某個對象時發現相應的bean不存在。

經過這樣七個步驟之後,我們的struts2改spring boot的任務便算是大功告成了。隻不過,這裡隻是改struts2子產品而已,是以原本的配置檔案依然都還存在,如果後期需要把整個項目都改成spring boot方式,或許那些xml檔案就都将不複存在了。

繼續閱讀