我需要在以下示例中为Spring Data JDBC项目配置Bean吗?

问题描述

在下面的示例中,我是否需要为Spring Data JDBC项目配置Bean?

即使没有那些bean,我也能够使我的存储库查询正常工作。

据我了解,NamedParameterJdbcoperations仅在内部用于向数据库提交sql语句,并且开发人员不会直接使用它。

想对此进行更多的澄清。

@SpringBootApplication
@EnableJdbcRepositories
public class SpringDataJdbcApplication extends AbstractJdbcConfiguration
{
    public static void main(String[] args) 
    {
        SpringApplication.run(SpringDataJdbcApplication.class,args);
    }
    
    @Bean
    @ConfigurationProperties(prefix="spring.datasource")
    public DataSource dataSource() 
    {
        DataSourceBuilder dataSourceBuilder = DataSourceBuilder.create();
        return dataSourceBuilder.build();
    }
    
    @Bean
    NamedParameterJdbcoperations namedParameterJdbcoperations(DataSource dataSource) 
    { 
        return new NamedParameterJdbcTemplate(dataSource);
    }

    @Bean
    PlatformTransactionManager transactionManager() 
    { 
        return new DataSourceTransactionManager(dataSource());
    }
}

解决方法

如果在Maven或Gradle的依赖项中包括org.springframework.boot:spring-boot-starter-data-jdbc,则通过“ Convention over configuration”范例,您根本不需要创建任何bean,包括dataSource bean。只需main方法就足够了。这些必需的bean将自动创建。

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

和内部application.yml

...
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://dbhost/db
    username: xxx
    password: xxx
    max-active: 3
...