Spring boot 需要帮助排除Spring Boot批处理应用程序中的数据源驱动程序异常吗
我有一个springboot批处理应用程序,它需要连接到Snowflake数据源。我得到的错误如下: 上下文初始化期间遇到异常-取消刷新尝试:org.springframework.beans.factory.BeanCreationException:创建名为“dataSource”的bean时出错,该名称在类路径资源[org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]中定义:通过工厂方法实例化bean失败;嵌套异常为org.springframework.beans.beanInstationException:未能实例化[com.zaxxer.hikari.HikariDataSource]:工厂方法“dataSource”引发异常;嵌套异常为org.springframework.boot.autoconfigure.jdbc.DataSourceProperties$DataSourceBeanCreationException:未能确定合适的驱动程序类,“记录器名称”:“org.springframework.context.annotation.AnnotationConfigApplicationContext” 但在pom文件中,我在依赖项中指定了JDBC驱动程序:Spring boot 需要帮助排除Spring Boot批处理应用程序中的数据源驱动程序异常吗,spring-boot,maven,jdbc,spring-batch,snowflake-cloud-data-platform,Spring Boot,Maven,Jdbc,Spring Batch,Snowflake Cloud Data Platform,我有一个springboot批处理应用程序,它需要连接到Snowflake数据源。我得到的错误如下: 上下文初始化期间遇到异常-取消刷新尝试:org.springframework.beans.factory.BeanCreationException:创建名为“dataSource”的bean时出错,该名称在类路径资源[org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]中定义:通过工
<dependencies>
<!-- Spring Boot Dependencies -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-batch</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!-- Database Dependency -->
<dependency>
<groupId>net.snowflake</groupId>
<artifactId>snowflake-jdbc</artifactId>
<version>3.12.9</version>
</dependency>
<!-- Misc Dependencies -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
</dependency>
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>${logstash.encoder.version}</version>
</dependency>
<!-- Testing Dependencies -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.batch</groupId>
<artifactId>spring-batch-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-library</artifactId>
<scope>test</scope>
</dependency>
在AppConfig类中,我设置了jdbcTemplate和dataSource bean:
@Configuration
public class AppConfig {
@Autowired
private Environment environment;
@Bean
public JdbcTemplate jdbcTemplate(DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
@Bean
@Qualifier("dataSource")
public DataSource snowflakeDataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName(environment.getProperty("snowflake.datasource.driver-class-name"));
dataSource.setUrl(environment.getProperty("snowflake.datasource.url"));
dataSource.setUsername(environment.getProperty("snowflake.datasource.username"));
dataSource.setPassword(environment.getProperty("snowflake.datasource.password"));
try {
System.out.println("Snowflake dataSource connection " + dataSource.getConnection());
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return dataSource;
}
}
我得到这个错误是因为maven依赖的冲突吗?另一篇堆栈溢出帖子提到了这种可能性,但没有提到如果是这种情况下如何解决
如何解析它并保留数据源
@Configuration
public class AppConfig {
@Autowired
private Environment environment;
@Bean
public JdbcTemplate jdbcTemplate(DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
@Bean
@Qualifier("dataSource")
public DataSource snowflakeDataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName(environment.getProperty("snowflake.datasource.driver-class-name"));
dataSource.setUrl(environment.getProperty("snowflake.datasource.url"));
dataSource.setUsername(environment.getProperty("snowflake.datasource.username"));
dataSource.setPassword(environment.getProperty("snowflake.datasource.password"));
try {
System.out.println("Snowflake dataSource connection " + dataSource.getConnection());
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return dataSource;
}
}