springbootapplication中的java字段jdbctemplate需要一个类型为“org.springframework.jdbc.core.jdbctemplate”的bean,但找不到该bean

rqcrx0a6  于 2021-07-08  发布在  Java
关注(0)|答案(1)|浏览(650)

我在跟踪https://spring.io/guides/gs/relational-data-access/ 所以在我的主要课堂上我有:

@SpringBootApplication
@ComponentScan(basePackages = {"com.example"})
public class SpringGuideApplication implements CommandLineRunner {
    private static final Logger log = LoggerFactory.getLogger(SpringGuideApplication.class);

    @Autowired
    JdbcTemplate jdbcTemplate;

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

    @Override
    public void run(String... strings) throws Exception {
        log.info("Creating tables");
        jdbcTemplate.execute("DROP TABLE clients IF EXISTS");
    }
}

此时我收到了一个错误:


***************************

APPLICATION FAILED TO START

***************************

Description:

Field jdbcTemplate in com.example.spring_guide.SpringGuideApplication required a bean of type 'org.springframework.jdbc.core.JdbcTemplate' that could not be found.

The injection point has the following annotations:
    - @org.springframework.beans.factory.annotation.Autowired(required=true)

Action:

Consider defining a bean of type 'org.springframework.jdbc.core.JdbcTemplate' in your configuration.

Process finished with exit code 1

我理解错误,但要创造 @Bean JdbcTemplate 我需要使用:

@Bean
public JdbcTemplate jdbcTemplate(DataSource dataSource) {
    return new JdbcTemplate(dataSource);
}

但我不想要,我不想要 dataSource 文件,我想有刚刚在内存数据库。有没有办法创造 JdbcTemplate 豆子没有 DataSource ? 这个教程有什么用?
在pom.xml中,现在我有:

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>5.2.10.RELEASE</version>
</dependency>

但也尝试过

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
    <version>2.4.0</version>
</dependency>

没有成功。

xe55xuns

xe55xuns1#

这就是生活的美 Spring-Boot . 它看到你在用 JdbcTemplate 所以它需要创建数据源,因为您没有提供任何信息,所以它失败了。即使使用内存数据库,也需要提供这些信息,所以 spring-boot 可以创建 JdbcTemplate 为你。我不确定您使用的是哪个内存数据库,但下面是一个如何使用h2的示例。您可以在单个db用户文档中找到这些信息。 spring.datasource.url=jdbc:h2:mem:yourdb spring.datasource.driverClassName=org.h2.Driver spring.datasource.username= spring.datasource.password= spring.jpa.database-platform=org.hibernate.dialect.H2Dialect

相关问题