如何將一個spring專案重構成spring-boot專案(僅後臺)
一.spring---spring-boot的區別
其實講區別,就是講spring-boot有不同
- Spring Boot可以建立獨立的Spring應用程式;
- 內嵌瞭如Tomcat,Jetty和Undertow這樣的容器,也就是說可以直接跑起來,用不著再做部署工作了。
- 無需再像Spring那樣搞一堆繁瑣的xml檔案的配置;
- 可以自動配置Spring;
- 提供了一些現有的功能,如量度工具,表單資料驗證以及一些外部配置這樣的一些第三方功能;
- 提供的POM可以簡化Maven的配置;
可以看出的區別主要是不需要配置Tomcat,其實說白了還有就是將xml的配置寫到了Java裡面,還有就是註解的不同,json解析的不同。
二.最近重構一個專案,原專案是spring-springmvc-mybatis,現在是spring-boot-springmvc-mybatis。詳細說說過程。
A.搭建一個spring-boot專案。按照需求整合了shiro,redis,分頁工具,響應頭等基本工具。
B.檢視mybatis的版本問題,一般的3.1.2之前的版本是需要自己配置物理分頁和攔截器的。後面的都不需要的可以整合分頁工具的。
C.匯入原專案的依賴包,注意json解析包不需要匯入,spring-boot預設採用json格式返回。
D.將spring專案中的XML配置檔案寫成config類,構建一個POJO的對映,將yml中的配置按照key-value的方式對映到配置檔案中,合理利用註解。
拿Encache的配置舉例,程式碼如下
** * EhCache快取配置類 * 動態新增快取參考:http://blog.csdn.net/u012255097/article/details/54576720 */ @Configuration public class EhcacheConfig { @Bean @Primary //配置了多個CacheManager,指定一個CacheManager作為預設 public EhCacheCacheManager ehCacheCacheManager(EhCacheManagerFactoryBean bean) { // 此錯誤提示可忽略,程式可正常執行 EhCacheCacheManager ehCacheCacheManager=new EhCacheCacheManager(bean.getObject()); /** * 也可在此動態新增快取,這樣就可以動態配置快取的引數 */ //建立一個快取管理器 //CacheManager singletonManager = CacheManager.create(); //建立一個快取例項 //Cache cache = new Cache("demo", 5000, false, false, 300, 300); //在記憶體管理器中新增快取例項 //ehCacheCacheManager.getCacheManager().addCache(cache); return ehCacheCacheManager; } @Bean public EhCacheManagerFactoryBean ehCacheManagerFactoryBean() { EhCacheManagerFactoryBean cacheManagerFactoryBean = new EhCacheManagerFactoryBean(); cacheManagerFactoryBean.setConfigLocation(new ClassPathResource("config/ehcache.xml")); cacheManagerFactoryBean.setShared(true); return cacheManagerFactoryBean; } }
如果還不明白再看驗證碼的config
原來的XML如下
現在的Java方式配置。
/** * @Author: TateBrown * @date: 2018/5/27 13:34 * @param: * @return: */ @Configuration public class Kaptcha { @Bean(name="captchaProducer") public DefaultKaptcha defaultKaptcha(){ DefaultKaptcha defaultKaptcha=new DefaultKaptcha(); Properties properties =new Properties(); properties.setProperty("kaptcha.border","yes"); properties.setProperty("kaptcha.border.color","105,179,90"); properties.setProperty("kaptcha.textproducer.font.color","blue"); properties.setProperty("kaptcha.textproducer.font.size","45"); properties.setProperty("kaptcha.image.width","125"); properties.setProperty("kaptcha.image.height","45"); properties.setProperty("kaptcha.textproducer.char.length","4"); properties.setProperty("kaptcha.textproducer.font.names","宋體,楷體,微軟雅黑"); Config config =new Config(properties); defaultKaptcha.setConfig(config); return defaultKaptcha; } }
注意@Conguration和@Bean必不可少,具體功能,具體去更詳細的地方尋找,這裡就不贅述了。
然後是需要新建一個beans類ConfigParameters
/** * 自動對映一個POJO到Spring Boot配置檔案(預設是application.yml檔案)的屬性集。 * config配置在application.yml檔案中,會按相同名稱自動注入到Bean中 * */ @Component //必須加上,才能自動注入 @ConfigurationProperties(prefix="config")
然後將原spring專案的xml中,例如資料庫連線池的配置,shiro的配置,mybatis的配置給匯入到yml裡,yml的寫法具體查詢,這裡就不贅述了。
B.完成上述的問題之後,
複製原來專案的entity層檔案和dao層mapper層,複製原來專案的mybeans層。
然後複製service層,注意service層是有講究的,原專案一般需要每次呼叫一個mapper之後是需要重新開啟sqlsession的,springboot是可以不這樣的,也就是說注意修改相應的註解和程式碼。
然後複製Controller層,注意註解的更改,我這裡由於原來是用postman測的介面,現在要改swagger,註解就改的略問繁瑣了。主要還是@Controller和@Request可以合併成一個。也就是spring-boot的註解,別的也沒什麼需要改。
C.之後解決解決包的問題,複製的時候尤其注意impot對正確的包很重要。由於java的jar包數量太多,很多名字是一樣的,它可能會引入錯誤的包。導致無法呼叫正確的方法類。
D。還有就是注意繼承的關係按照次序進行重構會比較方便。
三。體會
綜上所述。。能不重構還是不要重構了,其實沒那麼簡單。
相關文章
- 使用gradle管理spring-boot專案GradleSpringboot
- spring-boot專案的docker整合化部署(一)SpringbootDocker
- 如何重構一個過萬Star開源專案—BetterScroll
- 如何將一個本地專案推到github上Github
- 記一次專案重構
- 如果一個專案要你重構成前後端分離,你的方法論是什麼?後端
- 把spring-boot專案部署到tomcat中的方法SpringbootTomcat
- Spring-Boot專案中配置redis註解快取SpringbootRedis快取
- spring-boot-admin對spring-boot專案進行監控Springboot
- 如何清晰地描述一個專案架構架構
- K8S 建立Spring-boot專案並進行專案啟動與訪問K8SSpringboot
- 如何架構一箇中後臺專案的前端部分(webpack + 介面配置篇)架構前端Web
- 構建第一個基於 Gradle 的 Spring Boot 專案GradleSpring Boot
- 【Vue專案總結】後臺管理專案總結Vue
- 重構案例:將純HTML/JS專案遷移到WebpackHTMLJSWeb
- 本來寫的一個 API 介面專案,現在抽空改成一個後臺許可權管理專案API
- 如何搭建一個vue專案Vue
- 如何接手一個新專案
- 如何吃透一個java專案?Java
- IDEA如何在一個專案空間下管理多個專案?Idea
- 最近專案重構的一些感想
- 目前專案是API後臺,需要在這個專案中新增Dcat AdminAPI
- 分享一個完整的社群專案(Android端加後臺)Android
- 如何將Angular單專案升級為多專案Angular
- SSM搭建專案,從前端到後臺(一)SSM前端
- 我是如何讓公司後臺管理系統煥然一新的(上) -專案重構,效能優化優化
- 將Abp移植進.NET MAUI專案(一):搭建專案UI
- 專案重構經驗記錄
- Vue 搭配 Spring MVC 建立一個 web 專案VueSpringMVCWeb
- 記第一個Vue專案臺前幕後的經歷Vue
- 如何構建「大型 Node.js 專案」的專案結構?Node.js
- 如何打包部署一個tomcat專案Tomcat
- 使用Dockerfile構建一個django專案DockerDjango
- CNCF 宣佈 Helm 成為基金會下一個重點孵化專案
- Spring入門(一):建立Spring專案Spring
- 電子商城後臺系統(一):使用eclipse構建web專案EclipseWeb
- 一、快速構建Spring Boot專案【springboot記錄】Spring Boot
- 如何執行Spring Boot專案Spring Boot