我想使用 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用构造函数注入,因为它还没有被实例化。
使EntityManagera@Component创建 的另一个实例EntityManager。实现 InitiliazingBean 并使用afterPropertySet()不起作用,因为它不是 Spring 托管 bean。
任何想法都会有所帮助,因为我陷入困境并且没有想法。