自动装配 JdbcTemplate 与数据源?
Autowiring JdbcTemplate vs Datasource?
实施 non-jpa/orm DAO 层时 right/better 实践是什么?
@Repository
public class SampleDao {
private JdbcTemplate jdbcTemplate;
public SampleDao(DataSource dataSource) {
this.jdbcTemplate = new JdbcTemplate(dataSource);
}
// --- OR ---
public SampleDao(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
}
在 Spring 引导应用程序中,我通常建议注入 JdbcOperations
而不是注入 JdbcTemplate
或从 [=13= 创建新的 JdbcTemplate
实例]. JdbcOperations
接口由自动配置的 JdbcTemplate
.
实现
原因如下:
- bean已经定义,所以少了一个对象实例
JdbcOperations
不显示任何设置器,因此您不会意外更改共享单例 bean 上的内容
- 您可以使用
spring.jdbc.template...
应用程序属性来配置它
- 如果您需要进行测试,那么模拟比
DataSource
更容易
实施 non-jpa/orm DAO 层时 right/better 实践是什么?
@Repository
public class SampleDao {
private JdbcTemplate jdbcTemplate;
public SampleDao(DataSource dataSource) {
this.jdbcTemplate = new JdbcTemplate(dataSource);
}
// --- OR ---
public SampleDao(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
}
在 Spring 引导应用程序中,我通常建议注入 JdbcOperations
而不是注入 JdbcTemplate
或从 [=13= 创建新的 JdbcTemplate
实例]. JdbcOperations
接口由自动配置的 JdbcTemplate
.
原因如下:
- bean已经定义,所以少了一个对象实例
JdbcOperations
不显示任何设置器,因此您不会意外更改共享单例 bean 上的内容- 您可以使用
spring.jdbc.template...
应用程序属性来配置它 - 如果您需要进行测试,那么模拟比
DataSource
更容易