sti*_*vlo 20 java spring jdbctemplate
据我了解,无论是DataSource和JdbcTemplates是threadsafe,那么您可以配置的一个实例JdbcTemplate,然后安全地注入该共享引用到多个DAO(或仓库).也DataSource应该是Spring单例,因为它管理连接池.
官方的Spring文档JdbcTemplate最佳实践解释了替代方案(手册的摘录用斜体,方括号之间的注释:
new JdbcTemplate(dataSource)]但是,稍后的说明会阻止刚刚提出的所有选项:
配置完成后,JdbcTemplate实例就是线程安全的.如果您的应用程序访问多个数据库(可能需要多个DataSource,以及随后多个不同配置的JdbcTemplates),您可能需要多个JdbcTemplate实例.
换句话说,刚才提出的所有选项都会导致有多个JdbcTemplate实例(每个DAO一个),并且在文档说明在使用单个数据库时不需要这样做.
我要做的是直接注入JdbcTemplate需要它的各种DAO,所以我的问题是,这样做是否可以?而且,您是否也认为Spring参考文档是自相矛盾的?还是我的误会?
IMO,将 JdbcTemplate 注入到您的(多个)DAO 中没有问题。当您需要运行数据库查询时,该模板用于将您的 DAO“连接”到物理资源(数据库连接)。因此,如果 SessionFactory 和 TransactionManager 配置正确,您将不会遇到并发问题 - Spring 管理与持久层一起工作所需的 Bean 的生命周期。使用模板的优点是: