Spring如何使用ThreadLocal变量

时间:2015-11-22 18:19:01

标签: java multithreading spring entitymanager thread-local

我想了解Spring如何使用Thread local变量的一些细节 管理EntityManagers。

我的模型如下:

@Transactional
public class MyClass 
{
  @PersistenceContext
  private EntityManager entityManager;

    public void toSomethingTx()  
    {...}
}

让我们考虑上面的类,它是一个用@Transactional注释并使用实体管理器的类,
注入实体管理器时注入的内容实际上是代理类
查找 ThreadScope 中的实际实体管理器以传播调用。

这样,管理用户请求的每个线程都绑定到自己的实体管理器。

如果您可以验证我的模型和/或添加更多相关信息,那就太棒了 感谢

1 个答案:

答案 0 :(得分:-3)

java ThreadLocal机制上的Spring中继,请参阅:http://docs.oracle.com/javase/7/docs/api/java/lang/ThreadLocal.html

请注意,如果在代码中使用ThreadLocal,则必须在不需要时管理数据擦除,以避免内存泄漏。