在事务中包含资源

时间:2014-11-18 23:15:07

标签: spring

我正在尝试找到一种方法来确保在事务回滚时清除事务中创建的文件(使用@Transactional)等自定义资源。我尝试实现一个自定义的TransactionManager但找不到注册它的方法,但我知道例如spring-rabbitmq有自己的事务管理器,可以利用现有的事务。任何想法如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

不确定我是否正确使用,但根据标签名称,您使用的是弹簧。

您可以通过 Spring AOP 来处理它。

您应该创建自己的注释(例如 YourOwnTransactional ),然后进行检查。

如果存在注释,您可以调用如下:

@Around(@anyPublicMethod() && @annotation(YourOwnTransactional))
public void aroundAddAdvice(ProceedingJoinPoint pjp){
  try{
    pjp.proceed();
  }catch(YourException e){
    //rollback
  }
}

<强>编辑。