Open Yaohua-Cai opened 5 years ago
提这个问题不是难为温少吗? SpringBoot默认支持数据源是 DBCP, TOMCAT-JDBC ,还有光数据源。 你可以要求SpringBoot开发者把Druid加入也可以,或者你自己调整代码编译打包替换sprintboot的包。
提这个问题不是难为温少吗? SpringBoot默认支持数据源是 DBCP, TOMCAT-JDBC ,还有光数据源。 你可以要求SpringBoot开发者把Druid加入也可以,或者你自己调整代码编译打包替换sprintboot的包。
怎么会为难呢?现在是只要引入druid jar包,启动就会加载相关配置,没有还无法启动了。 难道我引入druid就不能用springboot原有的东西了?怎么都感觉有点流氓呀。
hi: 您好像没有明白我的意思,可能我解释的不太清楚。手动重写数据源配置类肯定是可以实现我的需求,但是我本身比较懒,不喜欢写这种重复代码。而且我感觉这个算是个小bug。 以下两个是我的压测和开发环境配置,只有单个数据源。同时引入druid-starter、hikaricp是为了切换环境方便,不用维护多个版本程序。 注意:oracle环境下,druid会与log4jdbc起冲突,所以压测环境中我只能换了个数据源。 在使用压测配置时候,即使指定了type,druid还是会在启动时候初始化。这里由于没有配置druid相关配置就会报错了。 看了下源码,应该就是这里的问题。 像如下代码一样修改一下应该就可以了。
感谢来信,欢迎交流。
Mobile: +86 18019692161
QQ : 785805159
在2019年8月11日 14:51,WangChangJuannotifications@github.com 写道:
直接引入连接池的驱动包,不用starter的方式,给你一个参考实现代码,支持双数据源
@configuration @Profile({"dev"}) public class DataSourceConfig { @value("Spring.primaryDataSource.driver") private String primaryDataSourceDriver; @value("Spring.primaryDataSource.Url") private String primaryDataSourceDriverUrl; @value("Spring.primaryDataSource.user") private String primaryDataSourceUser; @value("Spring.primaryDataSource.password") private String primaryDataSourcePassword;
@Value("Spring.secondDataSource.driver")
private String secondDataSourceDriver;
@Value("Spring.secondDataSource.Url")
private String secondDataSourceDriverUrl;
@Value("Spring.secondDataSource.user")
private String secondDataSourceUser;
@Value("Spring.secondDataSource.password")
private String secondDataSourcePassword;
@Primary
public DataSource primaryDataSource() {
HikariConfig config = new HikariConfig();
config.setJdbcUrl(primaryDataSourceDriverUrl);
config.setDriverClassName(primaryDataSourceDriver);
config.setUsername(primaryDataSourceUser);
config.setPassword(primaryDataSourcePassword);
return new HikariDataSource(config);
}
@Bean(name = "secondDataSource")
public DataSource secondDataSource() {
DruidDataSource datasource = new DruidDataSource();
datasource.setUrl(secondDataSourceDriverUrl);
datasource.setUsername(secondDataSourceUser);
datasource.setPassword(secondDataSourcePassword);
datasource.setDriverClassName(secondDataSourceDriver);
return datasource;
}
}
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or mute the thread.
环境: springboot 1.5.21,同时引入druid,hikaricp,log4jdbc,数据库是oracle11g。 压测环境使用hikaricp+log4jdbc,其他环境使用druid,根据profile启动项目。 问题: druid-spring-boot-starter启动会默认初始化DruidDataSourceAutoConfigure,当spring.datasource.type是其他类型时候报错,如下:
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [com/alibaba/druid/spring/boot/autoconfigure/DruidDataSourceAutoConfigure.class]: Invocation of init method failed; nested exception is java.sql.SQLException: not support oracle driver 1.0
希望能根据type初始化,未设置指定type值不进行初始化。 如下:@ConditionalOnProperty( name = {"spring.datasource.type"}, havingValue = "com.zaxxer.hikari.HikariDataSource", matchIfMissing = true )