java - 没有类型 'org.springframework.jdbc.core.JdbcTemplate' 的合格 bean 可用错误

标签 java spring-boot jdbc db2

我正在https://developer.ibm.com/tutorials/spring-with-db2-via-jdbc/上运行tutorial.example 但无法让它工作,我不断收到以下错误,并且不确定如何修复。

没有“org.springframework.jdbc.core.JdbcTemplate”类型的合格 bean 可用:预计至少有 1 个有资格作为 Autowiring 候选者的 bean。依赖注释:{@org.springframework.beans.factory.annotation.Autowired(required=true)}'

教程中没有提到与设置 bean 相关的内容,所以我不确定我是否应该中断它来修复它,或者我只是犯了一个错误。

我的应用程序类 -

@SpringBootApplication
public class SBApplication {
    public static void main(String[] args) {
        SpringApplication.run(SBApplication.class, args);
    }
 }

休息 Controller 示例 -

package application.rest.v1;

import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.ArrayList;
import java.util.List;
import main.java.application.jdbc.*;

@RestController
public class Example {
    @Autowired
    JdbcTemplate jdbcTemplate;

    @RequestMapping("test")
    public @ResponseBody ResponseEntity<String> example() {
        List<String> list = new ArrayList<>();
        list.add("Table data...");
        jdbcTemplate.query(
                "SELECT * FROM things", new Object[]{},
                (rs,rowNum) -> new Things(rs.getLong("id"), rs.getString("name")))
                .forEach(thing -> list.add(thing.toString()));
        return new ResponseEntity<String>(list.toString(), HttpStatus.OK);
    }
}

应用程序属性 -

spring.datasource.url=jdbc:imdb://xxxx.xxx.xxxx/xxxx
spring.datasource.username=xxxxxxx
spring.datasource.password=xxxx
spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration

此外,我没有连接到教程中建议的 DB2 实例,而是连接到我自己的实例。

最佳答案

我相信您缺少应该在配置中配置 JdbcTemplate 的部分。当您使用 spring boot 时,您可以通过类上的 @Configuration 注解来实现它。您的典型配置如下所示

@Configuration
public class WebAppConfig {

    @Bean(name = "appDataSource")
    @Primary
    @ConfigurationProperties(prefix = "spring.datasource")
    public DataSource dataSource() {
        return DataSourceBuilder.create().build();
    }

    @Bean(name = "applicationJdbcTemplate")
    public JdbcTemplate applicationDataConnection(){
        return new JdbcTemplate(dataSource());
    }
}

关于java - 没有类型 'org.springframework.jdbc.core.JdbcTemplate' 的合格 bean 可用错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57789909/

相关文章:

java - Spring AOP - 为什么我需要 aspectjweaver?

java - 了解数组访问(处理)

Java 命令行界面 : having multiple progress bars on different lines using '\r'

java - 如何在 Java 中获取特定类型的异常

java - JHipster 部署 glassfish 4 错误

java - 使用 Swagger UI 的基本身份验证

java - 千分尺永远不会更新

java - 如何将mysql连接到spring roo?

java - 在 Java 中使用 HikariCP 时如何指定数据库特定属性?

java - 使用 Spring 实现 JPA、JDBC 的 Java 项目