我想使用 JPA EntityListener 来支持 spring 安全 ACL。在@PostPersist
事件中,我创建了一个与持久化实体相对应的权限。
我需要这个操作来参与当前的交易。为此,我需要TransactionManager
在EntityListener
.
问题是,Spring 无法管理它,EntityListener
因为它是在EntityManagerFactory
实例化时自动创建的。在经典的 Spring 应用程序中,EntityManagerFactory
它本身是在TransactioManager
实例化期间创建的。
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
所以我没有办法TransactionManager
用构造函数注入,因为它还没有被实例化。
使EntityManager
a@Component
创建 的另一个实例EntityManager
。实现 InitiliazingBean 并使用afterPropertySet()
不起作用,因为它不是 Spring 托管 bean。
任何想法都会有所帮助,因为我陷入困境并且没有想法。