springboot v2.0.3版本多數據源配置

本篇分享的是springboot多數據源配置,在從springboot v1.5版本升級到v2.0.3時,發現之前寫的多數據源的方式不可用了,捕獲錯誤信息如:

異常:jdbcUrl is required with driverClassName.

先來說下之前的多數據源配置如:

 1 spring:
 2   datasource:
 3     url: jdbc:sqlserver://192.168.122.111;DatabaseName=flight
 4     username: sa
 5     password: 1234.abcd
 6     driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
 7   seconddatasource:
 8     url: jdbc:sqlserver://192.168.122.111;DatabaseName=flight2
 9     username: sa
10     password: 1234.abcd
11     driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver

配置了兩個數據庫,在原來默認的datasource節點下面增加了seconddatasource節點的配置,然後主要的代碼如:

 1     @Primary
 2     @Bean
 3     @ConfigurationProperties(prefix = "spring.seconddatasource")
 4     public DataSource dataSource() {
 5         return DataSourceBuilder.create().build();
 6     }
 7 
 8     @Bean(name = "secodDataSource")
 9     @ConfigurationProperties(prefix = "spring.seconddatasource")
10     public DataSource secodDataSource() {
11         return DataSourceBuilder.create().build();
12     }
13 
14     @Primary
15     @Bean
16     public JdbcTemplate jdbcTemplate(DataSource dataSource) {
17         return new JdbcTemplate(dataSource);
18     }
19 
20     @Bean(name = "secondJdbcTemplate")
21     public JdbcTemplate secondJdbcTemplate(@Qualifier(value = "secodDataSource") DataSource dataSource) {
22         return new JdbcTemplate(dataSource);
23     }

來創建兩個不同的jdbctemplate,到這裏老版本這樣乾沒有啥問題,能夠正常的得到數據;而升級未V2.03版本的時候提示:異常:jdbcUrl is required with driverClassName.

很顯然配置節點不能使用導致的,配置節點名字變了,要解決這問題這裏使用了託管DataSourceProperties的方式來對數據配置從新賦值,具體代碼如:

 1     @Bean
 2     @Primary
 3     @ConfigurationProperties(prefix = "spring.datasource")
 4     public DataSourceProperties dataSourceProperties(){
 5         return new DataSourceProperties();
 6     }
 7 
 8     @Bean("secondProperties")
 9     @ConfigurationProperties(prefix = "spring.seconddatasource")
10     public DataSourceProperties secondProperties(){
11         return new DataSourceProperties();
12     }
13 
14     @Primary
15     @Bean
16     public DataSource dataSource(DataSourceProperties dataSourceProperties) {
17         return dataSourceProperties.initializeDataSourceBuilder().build();
18     }
19 
20     @Bean(name = "secodDataSource")
21     public DataSource secodDataSource(@Qualifier(value = "secondProperties") DataSourceProperties dataSourceProperties) {
22         return dataSourceProperties.initializeDataSourceBuilder().build();
23     }

能夠看出多了一級DataSourceProperties的創建,此時能夠運行出結果如:


除了編碼的這種方式也可以採用上面說的既然是配置找不到,那配置肯定是改名了,根據錯誤提示我們不放把url改名未jdbc-url,具體如下:

此刻我們再來運行,同樣的也能出來數據;兩種方式處理v2.03版本數據源問題:

  • 編碼配置DataSourceProperties 
  • 通過配置jdbc-url

通過數據源配置節點名變動的問題,引發了springboot在升級迭代的過程中一些細微的變動,這或許會給我們在學習和升級過程中造成麻煩,所以官網每次升級的內容說明還是有必要看下的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章