问题描述
在下面的示例中,我是否需要为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
...