从零开始学springboot-jdbcUrl报错问题
2019-03-19 15:28
330 查看
4000
前言
博主近日在写springboot2.x(2.1.3)jdbc/jpa 多数据源的案例,运行代码时报错
jdbcUrl is required with driverClassName
原因
查阅了资料,发现还是springboot最细2.x版的原因
贴出两个关键配置:
application.yml:
spring: datasource: master: username: root password: 123456 url: jdbc:mysql://192.168.145.131:3306/test driver-class-name: com.mysql.cj.jdbc.Driver slave: username: root password: 123456 url: jdbc:mysql://192.168.145.131:3306/test2 driver-class-name: com.mysql.cj.jdbc.Driver jpa: properties: hibernate: hbm2ddl: auto: update
config/DataSource:
@Primary @Bean(name = "masterDataSource") @Qualifier("masterDataSource") @ConfigurationProperties(prefix="spring.datasource.master") public DataSource masterDataSource() { return DataSourceBuilder.create().build(); } @Bean(name = "slaveDataSource") @Qualifier("slaveDataSource") @ConfigurationProperties(prefix="spring.datasource.slave") public DataSource slaveDataSource() { return DataSourceBuilder.create().build(); } @Bean(name = "masterJdbcTemplate") @Qualifier("masterJdbcTemplate") public JdbcTemplate masterJdbcTemplate(@Qualifier("masterDataSource") DataSource dataSource) { return new JdbcTemplate(dataSource); } @Bean(name = "slaveJdbcTemplate") @Qualifier("slaveJdbcTemplate") public JdbcTemplate slaveJdbcTemplate(@Qualifier("slaveDataSource") DataSource dataSource) { return new JdbcTemplate(dataSource); }
这样的配置在springboot之前运行完全没问题,但是springboot升级2.0后,必须要配置jdbc-url才可以或者采取一种转换的方式。
贴上官方解释文档:
https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#howto-configure-a-datasource
两种解决方案如下:
方案一
直接改application.yml
spring: datasource: master: username: root password: 123456 jdbc-url: jdbc:mysql://192.168.145.131:3306/test driver-class-name: com.mysql.cj.jdbc.Driver slave: username: root password: 123456 jdbc-url: jdbc:mysql://192.168.145.131:3306/test2 driver-class-name: com.mysql.cj.jdbc.Driver jpa: properties: hibernate: hbm2ddl: auto: update
url改为jdbc-url即可。非常简单。
方案二
此方案折腾点,不过,这样配置文件至少不用动了
修改数据源配置文件
config/DataSource:
//master库 @Primary @Bean(name = "masterDataSourceProperties") @Qualifier("masterDataSourceProperties") @ConfigurationProperties(prefix = "spring.datasource.master") public DataSourceProperties masterDataSourceProperties() { return new DataSourceProperties(); } @Primary @Bean(name = "masterDataSource") @Qualifier("masterDataSource") @ConfigurationProperties(prefix = "spring.datasource.master") public DataSource masterDataSource(@Qualifier("masterDataSourceProperties") DataSourceProperties dataSourceProperties) { return dataSourceProperties.initializeDataSourceBuilder().build(); } //slave库 @Bean(name = "slaveDataSourceProperties") @Qualifier("slaveDataSourceProperties") @ConfigurationProperties(prefix = "spring.datasource.slave") public DataSourceProperties slaveDataSourceProperties() { return new DataSourceProperties(); } @Bean(name = "slaveDataSource") @Qualifier("slaveDataSource") @ConfigurationProperties(prefix = "spring.datasource.slave") public DataSource slaveDataSource(@Qualifier("slaveDataSourceProperties") DataSourceProperties dataSourceProperties) { return dataSourceProperties.initializeDataSourceBuilder().build(); }
可以看出,我们对两个数据源分别使用了masterDataSourceProperties和slaveDataSourceProperties进行配置的转换。
小结
两种方式在我的项目中均有实现,有兴趣的可以pull下来看看
https://github.com/MrCoderStack/SpringBootDemo/tree/master/sb-jdbc-multidb
https://gitee.com/MrCoderStack/SpringBootDemo/tree/master/sb-jdbc-multidb
请关注我的订阅号
相关文章推荐
- spring boot controller路由 url 扫描不到问题
- 关于spring boot整合mybatis使用oracle数据库出现could not load:oracle.jdbc.driver.OracleDriver问题的终极解决方案
- 【求助】Spring Boot 2 与Activiti 7 整合出现打开URL出现signin问题
- springboot中集成vue项目,vue项目路由history模式不能刷新和输入url访问问题
- spring boot controller路由 url 扫描不到问题
- spring boot 2.0 报错:“jdbcUrl is required with driverClassName.” 解决办法!
- 75. Spring Boot 定制URL匹配规则【从零开始学Spring Boot】
- 75. Spring Boot 定制URL匹配规则【从零开始学Spring Boot】
- Angular2 和springboot 整合后 url 解析出现的问题解决方案
- springboot之Filter指定过滤URL的常见问题
- spring boot controller路由 url 扫描不到问题
- 使用spring的jdbc处理mysql时,出现别名问题处理
- (39.1) Spring Boot Shiro权限管理【从零开始学Spring Boot】
- 112. Spring Boot 定时任务升级篇【从零开始学Spring Boot】
- 48. spring boot单元测试restfull API【从零开始学Spring Boot】
- 45. Spring Boot MyBatis连接Mysql数据库【从零开始学Spring Boot】
- (1)spring boot起步之Hello World【从零开始学Spring Boot】
- springboot创建项目问题:Failure to transfer org.codehaus.plexus:plexus-archiver:jar:2.0.1 from
- spring boot面试问题集锦
- (二十三)IDEA 构建一个springboot工程,以及可能遇到的问题