最佳实践:使用Spring AOP对异常进行统一处理(6)
时间:2025-07-10
时间:2025-07-10
有必要使用一个统一的异常处理机制 来进行某些异常处理的统一决策。比如对异常进行统一的日志记录,对散落在各处的某类异常进行统一处理等。
3. 参考资料
读者需要了解面向切面编程的原理,及熟悉Spring AOP。这里只简单介绍一下AOP的一些关键概念,更详细的内容请大家查阅相关资料。
3.1. AOP 的术语
切面(aspect)
切面是你要实现的交叉功能。就是通知和切入点的结合。通知和切入点共同定义了关于切面的全部内容:它的功能、在何时和何地完成功能。
通知(Advice)
通知定义了切面是什么以及何时使用。除了描述切面要完成的工作,通知还解决了何时执行这个工作的问题。应该在一个方法被调用之前?之后?或者抛出异常时。
切入点(pointcut)
如果说通知定义了切面的"什么"和"何时",那么切入点就定义了"何地"。切入点是连接点的集合。
连接点(joinpoint)
连接点是应用程序执行过程中能够插入切面的地点。这些点可以是方法被调用时、异常抛出时、甚至字段被编辑时。
引入(Intrduction)
引入允许你为已经存在的类添加新方法和属性。比如一个Auditable通知类,记录对象在最后一次被修改时的状态。只需要一个setLastModified(Date)方法,和一个实例变量来保存这个状态。这个新方法和实例变量就可以被引入到现有的类,从而在不修改它们的情况下,让他们具有新的行为和状态。
目标对象(Target)
目标对象是被通知的对象(被拦截的对象)。
代理(Proxy)
代理是将通知应用到目标对后创建的对象。
织入(weaving)
织入是将切面应用到目标对象从而创建一个新的代理对象的过程。 在目标对象的生命周期里有多个机会发生织入过程。比如编译时、类加载时、运行时。
通知的类型:
1.前置通知(Before advice): 在某连接点(join point)之前执行的通知,但这个通知不能阻止连接点前的执行(除非它抛出一个异常)。
2.返回后通知(After returning advice): 在某连接点(join point)正常完成后执行的通知:例如,一个方法没有抛出任何异常,正常返回。
3.抛出异常后通知(After throwing advice): 在方法抛出异常退出时执行的通知。
4.后通知(After (finally) advice): 当某连接点退出的时候执行的通知(不论是正常返回还是异常退出)。
下一篇:钢材市场营运方案