趁著這個周末加班...對項目的spring配置文件做了一次重構(gòu)哄芜,使配置文件的理解方式更加清晰了诗轻。
先說項目情況嗅义,當(dāng)前項目剛從一波同事手中接手屏歹,
項目最開始是只有國內(nèi)版本,
然后復(fù)制粘貼開發(fā)了印尼版本之碗,
再復(fù)制粘貼開發(fā)了泰國版本蝙眶,
每個版本在不同的代碼庫, 功能和流程大同小異褪那,但是依賴的服務(wù)接口都不相同(基線服務(wù)是不同的開發(fā)團隊開發(fā)使然)幽纷。
公司為了后續(xù)快速部署新國家,使出了大招 國際化 博敬, 那么首先要做的就是合并代碼友浸,添加適配層(這些工作同樣不簡單),那么我們來看看合并后的代碼spring 配置及加載文件是怎么樣的
先說說問題
- 左邊的圖是spring加載文件偏窝,上面的紅圈是用作適配作用收恢,國內(nèi)的使用pop ,國外的使用 overseas,因為文件名稱不同祭往,所以在項目的配置中肯定有個判斷點 在配置中派诬,這兒使用了maven filter過濾,編譯時加載不同的適配層
- 左邊下面的紅圈功能只有在中國使用链沼,外國沒有,那么從文件名中沒有區(qū)分沛鸵,那么一定存在另一個判斷點在配置中
- 中間的圖是因為將 maven 的 filter過濾功能 和 spring 的 el表達(dá)式運行時注入功能 混用(因為都是用占位符${...})
- 右面的圖是在不同環(huán)境括勺、不同國家的profile選擇,(大家能看出來怎么選嗎)
通過梳理和分析曲掰,針對上述問題疾捍,調(diào)整測試后的 配置結(jié)構(gòu)如下:
- 新建profiles文件夾,再建部署國家文件夾栏妖,里面根據(jù)不同的運行環(huán)境(dev乱豆、test、production)配置文件吊趾,這樣我們在pom中只要根據(jù)國家和運行環(huán)境可以一次性將所需文件打包宛裕,另外因為文件名稱一致,我們?nèi)コ艘粋€判斷點
- 在右上圖中我們可以在不同國家加載不同的配置文件,可以靈活添加和組合
- 通過右下圖我們可以看出我們在國家和運行維度兩個維度構(gòu)建profile论泛,十分清晰揩尸,很容找到當(dāng)前的maven profile 。
通過 重構(gòu)屁奏,將多國家部署spring配置文件分離的更加清晰岩榆,也更容易使團隊理解,當(dāng)然重構(gòu)過后別忘了測試哦。
歡迎關(guān)注bob勇边,后續(xù)會將工作中的一些心得和大家一起分享犹撒。