首页 > 解决方案 > 使用 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);
    }
}

有谁知道为什么会出现这个错误?谢谢收听

标签: javaspringspring-bootjpajdbc

解决方案


推荐阅读