自动装配 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 更容易