本篇分享的是springboot多數據源配置,在從springboot v1.5版本升級到v2.0.3時,發現之前寫的多數據源的方式不可用了,捕獲錯誤信息如:
異常:jdbcurl is required with driverclassname.
先來說下之前的多數據源配置如:
1
2
3
4
5
6
7
8
9
10
11
|
spring: datasource: url: jdbc:sqlserver: //192.168.122.111;databasename=flight username: sa password: 1234 .abcd driver- class -name: com.microsoft.sqlserver.jdbc.sqlserverdriver seconddatasource: url: jdbc:sqlserver: //192.168.122.111;databasename=flight2 username: sa password: 1234 .abcd driver- class -name: com.microsoft.sqlserver.jdbc.sqlserverdriver |
配置了兩個數據庫,在原來默認的datasource節點下面增加了seconddatasource節點的配置,然后主要的代碼如:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
@primary @bean @configurationproperties (prefix = "spring.seconddatasource" ) public datasource datasource() { return datasourcebuilder.create().build(); } @bean (name = "secoddatasource" ) @configurationproperties (prefix = "spring.seconddatasource" ) public datasource secoddatasource() { return datasourcebuilder.create().build(); } @primary @bean public jdbctemplate jdbctemplate(datasource datasource) { return new jdbctemplate(datasource); } @bean (name = "secondjdbctemplate" ) public jdbctemplate secondjdbctemplate( @qualifier (value = "secoddatasource" ) datasource datasource) { return new jdbctemplate(datasource); } |
來創建兩個不同的jdbctemplate,到這里老版本這樣干沒有啥問題,能夠正常的得到數據;而升級未v2.03版本的時候提示:異常:jdbcurl is required with driverclassname.
很顯然配置節點不能使用導致的,配置節點名字變了,要解決這問題這里使用了托管datasourceproperties的方式來對數據配置從新賦值,具體代碼如:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
@bean @primary @configurationproperties (prefix = "spring.datasource" ) public datasourceproperties datasourceproperties(){ return new datasourceproperties(); } @bean ( "secondproperties" ) @configurationproperties (prefix = "spring.seconddatasource" ) public datasourceproperties secondproperties(){ return new datasourceproperties(); } @primary @bean public datasource datasource(datasourceproperties datasourceproperties) { return datasourceproperties.initializedatasourcebuilder().build(); } @bean (name = "secoddatasource" ) public datasource secoddatasource( @qualifier (value = "secondproperties" ) datasourceproperties datasourceproperties) { return datasourceproperties.initializedatasourcebuilder().build(); } |
能夠看出多了一級datasourceproperties的創建,此時能夠運行出結果如:
除了編碼的這種方式也可以采用上面說的既然是配置找不到,那配置肯定是改名了,根據錯誤提示我們不放把url改名未jdbc-url,具體如下:
此刻我們再來運行,同樣的也能出來數據;兩種方式處理v2.03版本數據源問題:
•編碼配置datasourceproperties
•通過配置jdbc-url
通過數據源配置節點名變動的問題,引發了springboot在升級迭代的過程中一些細微的變動,這或許會給我們在學習和升級過程中造成麻煩,所以官網每次升級的內容說明還是有必要看下的。
總結
以上所述是小編給大家介紹的springboot v2.0.3版本多數據源配置方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!
原文鏈接:https://www.cnblogs.com/wangrudong003/archive/2018/11/09/9933162.html