在Spring AOP中抛出异常

Pom*_*rio 7 aop spring spring-aop

每次我阅读官方的Spring AOP文档(链接)时,我都会对使用RuntimeExceptions的建议行为感到困惑.有人会检查我的未成年人是否适合以下建议?

@之前

  • 建议抛出异常=目标(未执行)建议(已执行)
  • 目标抛出异常=目标(已执行)建议(已执行)

@AfterReturning接口

  • 建议抛出异常=目标(已执行)建议(已执行)
  • 目标抛出异常=目标(已执行)建议(未执行)

@AfterThrowing

  • 建议抛出异常=目标(已执行)建议(未执行)
  • 目标抛出异常=目标(已执行)建议(已执行)

@后

  • 建议抛出异常=目标(已执行)建议(已执行)
  • 目标抛出异常=目标(已执行)建议(已执行)

@周围

  • 建议抛出异常=目标(已执行)建议(已执行)
  • 目标抛出异常=目标(已执行)建议(执行到point.proceed())

nic*_*ild 12

这就是我通常看它的方式.

try {
    //@Before
    method();
    //@AfterReturning
} catch(Throwable t) {
    //@AfterThrowing
} finally {
    //@After
}
Run Code Online (Sandbox Code Playgroud)

@Around是一种自己的野兽.由于您选择何时调用目标,因此您可以捕获任何Exception可能的目标throw.因此,您可以轻松地将呼叫包装在一个try-catch-finally并且可以访问前面提到的任何和所有连接点.

我假设当你说'执行'时,你的意思是'执行到抛出异常的程度'.

另一件可能对你很重要的是@Order注释.较高的价值@Order首先出现在前一侧,并且它们在后侧发挥作用.将多个建议组合到同一目标时,请务必牢记这一点.