Spring AOP:如何确定方法是否使用@After抛出异常?

时间:2018-02-13 21:05:41

标签: spring spring-aop

春天docs说:

  

在建议之后必须准备好处理正常和异常   返回条件。

@After("com.xyz.myapp.SystemArchitecture.dataAccessOperation()")
public void doReleaseLock() {
    // ...
}

我有兴趣知道dataAccessOperation是正常完成还是异常完成。不幸的是,上面的代码片段是为了生成有史以来最无用的文档。我知道我可以单独使用AfterReturningAfterThrowing,甚至Around,但这不是重点。由于存在After,我应该可以使用它。

1 个答案:

答案 0 :(得分:0)

文档想要说的是,无论是否抛出异常,您的@After建议都应该有效。这并不意味着你可以从建议中确定它。如果应该做不同的事情,

  • 如果不接触控制流,则使用@AfterReturning@AfterThrowing,并且您的建议不会处理任何异常,
  • 如果你想在调用之前实际捕获和处理抛出的异常和/或修改方法参数,或者在调用之后返回值或者完全跳过方法执行,则使用{{1>或@Around建议。