首页 > 解决方案 > spring-data 默认情况下是否总是在同一个请求中使用相同的持久化上下文?

问题描述

一个例子是,如果我的 spring 控制器有两个 Autowired 服务,并且两个服务都有一个也由 spring 控制的 PersistenceContext (我什么也不做),默认情况下在每个请求中都将共享相同的上下文?

标签: springjpadependency-injectionspring-data-jpaspring-data

解决方案


不,他们会使用不同的。持久性上下文 ( EntityManager) 被定义为 JPA 中的线程绑定概念。因此,每个请求都会看到EntityManager每个新请求的新实例。

对于获得EntityManager注入的单例 Spring 组件,Spring 将为您自动装配一个代理实例,以便它可以轻松地交换支持实例。这是 Spring 容器的核心功能,不需要 Spring Data JPA 中的任何内容(请参阅此处的文档)。


推荐阅读