Spring JdbcTemplate 和线程
Posted
技术标签:
【中文标题】Spring JdbcTemplate 和线程【英文标题】:Spring JdbcTemplate and Threading 【发布时间】:2010-10-02 19:29:20 【问题描述】:在 Swing 中使用JdbcTemplate
分叉线程以执行插入是否安全。
这是一个日志事件,我尽可能不希望它影响感知性能。
【问题讨论】:
【参考方案1】:来自 Spring 论坛的This answer 说 yes.t=25965
JdbcTemplate 是一个单例,一旦设置就不会改变状态。
【讨论】:
不再。谢谢。【参考方案2】:还要注意它的线程安全是very well explained in the Spring 3.1 reference documentation:
13.2.1.2 JdbcTemplate 最佳实践
JdbcTemplate 类的实例在配置后是线程安全的。这很重要,因为这意味着您可以配置 JdbcTemplate 的单个实例,然后安全地将这个共享引用注入到多个 DAO(或存储库)中。 JdbcTemplate 是有状态的,因为它维护对 DataSource 的引用,但这种状态不是会话状态。
【讨论】:
并仔细阅读“一旦配置”位,所以不要滥用 setMaxResult 来限制给定查询的给定线程的结果集,因为它会影响所有查询和使用共享 JdbcTemplate 实例的所有线程。 【参考方案3】:为什么你会认为它不会?
我没有直接从 Swing 使用 JdbcTemplate
,但我有几个 Web 应用程序(每个请求都有一个单独的线程),我从来没有遇到过任何线程问题。在这种情况下,模板在应用程序启动时配置一次,并使用不同的参数重复调用。
如果您担心线程问题,您可以随时为每个日志线程创建一个新模板...
【讨论】:
以上是关于Spring JdbcTemplate 和线程的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot 2 + JdbcTemplate - 有没有办法为每个支持的数据库提供 SQL 查询?