Spring boot 需要帮助排除Spring Boot批处理应用程序中的数据源驱动程序异常吗

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]中定义:通过工

我有一个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驱动程序:

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

    }

}