经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » Java » 查看文章
springboot v2.0.3版本多数据源配置
来源:cnblogs  作者:神牛003  时间:2018/11/9 11:23:51  对本文有异议

本篇分享的是springboot多数据源配置,在从springboot v1.5版本升级到v2.0.3时,发现之前写的多数据源的方式不可用了,捕获错误信息如:

  1. 异常:jdbcUrl is required with driverClassName.

先来说下之前的多数据源配置如:

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

配置了两个数据库,在原来默认的datasource节点下面增加了seconddatasource节点的配置,然后主要的代码如:

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

来创建两个不同的jdbctemplate,到这里老版本这样干没有啥问题,能够正常的得到数据;而升级未V2.03版本的时候提示:异常:jdbcUrl is required with driverClassName.

很显然配置节点不能使用导致的,配置节点名字变了,要解决这问题这里使用了托管DataSourceProperties的方式来对数据配置从新赋值,具体代码如:

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

能够看出多了一级DataSourceProperties的创建,此时能够运行出结果如:


除了编码的这种方式也可以采用上面说的既然是配置找不到,那配置肯定是改名了,根据错误提示我们不放把url改名未jdbc-url,具体如下:

此刻我们再来运行,同样的也能出来数据;两种方式处理v2.03版本数据源问题:

  • 编码配置DataSourceProperties 
  • 通过配置jdbc-url

通过数据源配置节点名变动的问题,引发了springboot在升级迭代的过程中一些细微的变动,这或许会给我们在学习和升级过程中造成麻烦,所以官网每次升级的内容说明还是有必要看下的。

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号