Ошибка доступа к двум источникам данных с помощью Spring Boot - PullRequest
0 голосов
/ 20 февраля 2019

Я разрабатываю приложение, которое обращается к двум базам: Db2 и SQL Server с пружинной загрузкой.

При попытке доступа ко второму источнику данных возникает следующая ошибка:

org.springframework.boot.autoconfigure.jdbc.DataSourceProperties$DataSourceBeanCreationException: Failed to determine a suitable driver class

Это не проблема с драйвером, потому что когда я сжимаю приложение для запуска только с одним из банков, оно работает

Следуйте ниже, как проект:

application.properties:

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);
    }
}

Кто-нибудь знаетпочему эта ошибка?Спасибо за прослушивание

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...