1 回答
TA贡献1806条经验 获得超5个赞
由于您的应用程序使用 spring,您可以尝试通过以下几种方法之一来完成此操作:
春季AOP
在这种方法中,您编写一条建议,要求 spring 将其应用于特定方法。如果您的方法使用@Transactional注释,您可以在事务开始后立即将建议应用于那些方法。
扩展 TransactionManager 实现
让我们假设您的交易正在使用JpaTransactionManager.
public class SecurityPolicyInjectingJpaTransactionManager extends JpaTransactionManager {
@Autowired
private EntityManager entityManager;
// constructors
@Override
protected void prepareSynchronization(DefaultTransactionStatus status, TransactionDefinition definition) {
super.prepareSynchronization(status, definition);
if (status.isNewTransaction()) {
// Use entityManager to execute your database policy param/values
// I would suggest you also register an after-completion callback synchronization
// This after-completion would clear all the policy param/values
// regardless of whether the transaction succeeded or failed
// since this happens just before it gets returned to the connection pool
}
}
}
现在只需配置您的 JPA 环境即可使用您的自定义JpaTransactionManager类。
可能还有其他的,但这是我想到的两个。
添加回答
举报