java - 使用 Spring Boot 访问两个数据源时出错
问题描述
我正在开发一个访问两个基础的 APP:Db2 和带有 Spring Boot 的 SQL Server。
当我尝试访问第二个数据源时,会发生以下错误:
org.springframework.boot.autoconfigure.jdbc.DataSourceProperties$DataSourceBeanCreationException: Failed to determine a suitable driver class
驱动程序没有问题,因为当我挤压应用程序以仅与其中一家银行一起运行时,它可以工作
按照下面的项目是如何的:
应用程序属性:
Conexao sqlserver
spring.datasource.url=jdbc:sqlserver://localhost;DatabaseName=DataBaseTest
spring.datasource.username=user
spring.datasource.password=user
spring.datasource.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
Conexao db2
spring.secondDatasource.url=jdbc:db2://localhost/DataBaseTest:user=user;password=user
spring.secondDatasource.url.driverClassName = com.ibm.db2.jcc.DB2Driver
多数据库配置
@Configuration
public class MultipleDataSourceConfiguration {
@Bean
@Primary
@ConfigurationProperties("spring.datasource")
public DataSourceProperties firstDataSourceProperties() {
return new DataSourceProperties();
}
@Bean
@ConfigurationProperties("spring.secondDatasource")
public DataSourceProperties secondDataSourceProperties() {
return new DataSourceProperties();
}
@Bean(name="dataSourceFromSQLServer")
@Primary
@ConfigurationProperties(prefix = "spring.datasource")
public HikariDataSource dataSourceFromSqlServer() {
return firstDataSourceProperties().initializeDataSourceBuilder()
.type(HikariDataSource.class).build();
}
@Bean(name="dataSourceFromDb2")
@ConfigurationProperties("spring.secondDatasource.configuration")
public HikariDataSource secondDataSource() {
return secondDataSourceProperties().initializeDataSourceBuilder()
.type(HikariDataSource.class).build();
}
}
读者等级
public class Reader extends JdbcCursorItemReader<BaixaProtesto> {
@Autowired
private JdbcTemplate jdbcTemplate;
private MultipleDataSourceConfiguration multipleDataSourceConfiguration;
public Reader(DataSource dataSource) {
//Read base from first datasource
//everything ok at this point
//omitted code
}
private BigDecimal getCnpjFromDB2(String name,
int number) {
//Query ommitted
final String QUERY = "SELECT ";
multipleDataSourceConfiguration = new MultipleDataSourceConfiguration();
//point where the exception is thrown
HikariDataSource hikariDataSource = multipleDataSourceConfiguration.secondDataSource();
jdbcTemplate.setDataSource(hikariDataSource);
return new BigDecimal("0.1");
}
主班
@SpringBootApplication
public class Application {
public static void main(String[] args) throws Exception {
SpringApplication.run(Application.class, args);
}
}
有谁知道为什么会出现这个错误?谢谢收听
解决方案
推荐阅读
- ios - Flutter - 如何在没有用户交互的情况下推送到其他路由(如 onTap)?
- python - 使用 tkinter 进行键盘控制
- python - 哪个更好:`iter` 或 `while` 用于循环?
- java - 如何在 Katalon 中生成随机浮点数?
- javascript - Slick.Grid 不是构造函数
- google-bigquery - Bigquery 和谷歌云存储
- java - 在获取用户输入并在java中等待之后调用aa方法
- excel - 将 Internet Explorer 选项卡导出到 HTML 文件
- c# - 如何将 SBPL 字节 [] 发送到我的 SATO CG408TT 条码打印机
- gitlab - 将整个 repo 从 gogs 导入到 gitlab 服务器