【发布时间】:2019-02-01 11:51:26
【问题描述】:
使用构造函数注入是最佳实践。但是我无法通过@PersistenceContext 实现这一点。
我想要以下构造函数:
private final EntityManager entityManager;
@Autowired
public MyService(@PersistenceContext EntityManager entityManager) {
this.entityManager = entityManager;
}
但我不能,因为@PersistenceContext 仅适用于TYPE、METHOD 和FIELD。
问:如何通过构造函数注入容器管理EntityManager?
【问题讨论】:
-
我不太清楚你的意思,不删除
@PersistenceContext对你有用吗?通过@Autowired注入EntityManager应该也能正常工作 -
@crizzis 是否会注入与
@PersistenceContext相同的实体管理器?我找不到任何文件证明这一点。 -
如果您使用的是 spring boot:可能是的,因为 spring 是您的容器。如果您在某个应用程序服务器中使用 Spring MVC:可能不是因为
@Autowired搜索 any matching bean,这意味着您 可能非常好抓住容器管理的EntityManager。如果您指定自定义EntityManagerFactory,则可以确保获得自己的
标签: java spring hibernate spring-boot jpa