问题
I'm developing an APP that accesses two bases: Db2 and SQL Server with spring boot.
When I try to access the second datasource the following error occurs:
org.springframework.boot.autoconfigure.jdbc.DataSourceProperties$DataSourceBeanCreationException: Failed to determine a suitable driver class
It is not a problem with the driver because when I squeeze the app to run with just one of the banks it works
Follow below how the project is:
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
Multi database configuration
@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();
}
}
Class of reader
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");
}
Main class
@SpringBootApplication
public class Application {
public static void main(String[] args) throws Exception {
SpringApplication.run(Application.class, args);
}
}
Does anyone know why this error? Thanks for listening
来源:https://stackoverflow.com/questions/54795090/error-access-two-datasource-with-spring-boot