一、項目需求
在開發過程中,由于技術的不斷迭代,為了提高開發效率,需要對原有項目的架構做出相應的調整。
二、存在的問題
為了不影響項目進度,架構調整初期只是把項目做了簡單的maven管理,引入springboot并未做spring cloud微服務處理。但隨著項目的進一步開發,急需拆分現有業務,做微服務處理。因此架構上的短板日益突出。spring cloud config 無法完全應用,每次項目部署需要修改大量配置文件。嚴重影響開發效率,因此便萌生了對項目架構再次調整的決心。
三、調整建議
為了兼容以前的代碼版本,盡量不修改現有的代碼結構,以免增加額外的工作量并且為了更好的應用cloud config。
首先,創建jdbcconfigbean類,用以讀取配置文件,實例代碼入如下(僅供參考):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
import org.springframework.beans.factory.annotation.value; import org.springframework.cloud.context.config.annotation.refreshscope; import org.springframework.stereotype.component; @refreshscope @component ( "jdbcconfigbean" ) public class jdbcconfigbean { @value ( "${jdbc.driver}" ) private string driver; @value ( "${db1.jdbc.url}" ) private string url; @value ( "${db1.jdbc.username}" ) private string username; @value ( "${db1.jdbc.password}" ) private string password; @value ( "${db2.jdbc.url}" ) private string db2_url; @value ( "${db2.jdbc.username}" ) private string db2_username; @value ( "${db2.jdbc.password}" ) private string db2_password; // 其他數據源 // 其他配置 // 相應的getter setter 方法 } |
其次,創建數據源,代碼示例如下(僅供參考):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
/** * xml mabatis xml配置文件 * @param xml * @return **/ public static sqlsessionfactory create(string xml){ jdbcconfigbean jdbcconfigbean = (jdbcconfigbean) springcontextutil.getbean( "jdbcconfigbean" ); properties properties = new properties(); properties.setproperty( "jdbc.driver" , jdbcconfigbean.getdriver()); properties.setproperty( "db1.jdbc.url" , jdbcconfigbean.geturl()); properties.setproperty( "db1.jdbc.username" , jdbcconfigbean.getusername()); properties.setproperty( "db1.jdbc.password" , jdbcconfigbean.getpassword()); properties.setproperty( "db2.virtual.jdbc.url" , jdbcconfigbean.getdb2_url()); properties.setproperty( "db2.virtual.jdbc.username" , jdbcconfigbean.getdb2_username()); properties.setproperty( "db2.virtual.jdbc.password" , jdbcconfigbean.getdb2_password()); // 其他屬性 try { reader reader = resources.getresourceasreader(xml); sqlsessionfactorybuilder sqlsessionfactorybuilder = new sqlsessionfactorybuilder(); return sqlsessionfactorybuilder.build(reader, properties); } catch (ioexception e) { log.error( "創建數據源失敗:" + e.getmessage()); } return null ; } |
以上,便可以做多數據元的配置,并且在不改動現有代碼結構的條件下很好的集成spring cloud config和mybatis。
四、小結
寫作目的不是為了解決具體的問題,因為每個人遇到的項目都不相同,問題也不會一樣,應用場景也不盡相同。對于具體問題可能有失參考意義。但是我們也應該看到通用的部分,比如多數據源的配置,cloud config的應用等等。
最后需要說明的一點是不要拘泥于具體的實現,而是要體會其中的邏輯,理解技術應用的方式。具體實現并不重要,重要的是解決問題的過程以及其中的思想,為什么要這樣做,為什么可以這樣做,這樣做的好處在哪里?真正理解技術,這些問題便不難回答。
小結難免有不當之處,歡迎諸位指正!希望可以通過不斷的討論小結精進技術。讓我們同技術死磕到底!
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對服務器之家的支持。如果你想了解更多相關內容請查看下面相關鏈接
原文鏈接:https://blog.csdn.net/weixin_35971547/article/details/85632346