aop的五种通知有什么区别
时间: 2023-07-28 16:08:12 浏览: 51
AOP的五种通知是前置通知(Before)、后置通知(After)、返回通知(AfterReturning)、异常通知(AfterThrowing)和环绕通知(Around)。它们的区别如下:
1. 前置通知(Before):在目标方法执行之前执行。可以用于做一些准备工作,如权限校验、参数校验等。
2. 后置通知(After):在目标方法执行之后执行。可以用于做一些清理工作,如释放资源、记录日志等。
3. 返回通知(AfterReturning):在目标方法执行之后执行,但只有在目标方法执行成功返回后才执行。可以用于获取方法执行返回值或对返回结果进行处理。
4. 异常通知(AfterThrowing):在目标方法抛出异常时执行。可以用于记录异常日志、回滚事务等。
5. 环绕通知(Around):在目标方法执行之前和之后都执行,可以在方法执行前做一些准备工作,在方法执行后做一些清理工作,也可以决定是否执行目标方法。它可以替代其他四种通知,是最为强大的通知类型。
总之,不同的通知类型适用于不同的场景,可以根据具体需求选择相应的通知类型来实现AOP。
相关问题
spring aop五个通知的执行顺序
Spring AOP 有五种通知类型,分别是前置通知(Before)、后置通知(After)、返回通知(AfterReturning)、异常通知(AfterThrowing)和环绕通知(Around)。它们的执行顺序如下:
1. 环绕通知(Around):在目标方法执行前后都会执行,且可以控制目标方法的执行。如果有多个环绕通知,按照配置文件中的顺序依次执行。
2. 前置通知(Before):在目标方法执行前执行,如果有多个前置通知,按照配置文件中的顺序依次执行。
3. 目标方法执行(JoinPoint):执行目标方法。
4. 返回通知(AfterReturning):在目标方法正常返回时执行,如果有多个返回通知,按照配置文件中的顺序依次执行。
5. 异常通知(AfterThrowing):在目标方法抛出异常时执行,如果有多个异常通知,按照配置文件中的顺序依次执行。
注意:前置通知和后置通知是不会影响目标方法的执行结果的,返回通知和异常通知可以获取目标方法的返回值或异常信息。而环绕通知则可以控制目标方法的执行,可以替代其他四种通知的功能。
AOP和拦截器有什么区别
AOP(面向切面编程)和拦截器都是在程序运行时动态地修改程序行为的技术,但它们的实现方式和作用略有不同。
AOP是一种编程范式,它通过将程序中的功能分解成不同的关注点(例如日志、事务、安全等),然后利用一些特殊的语法和工具将这些关注点与程序的主要逻辑分离开来,从而实现代码复用和可维护性。AOP通常使用切面、连接点和通知等概念来描述不同的关注点和它们的交互方式。
拦截器则是一种设计模式,它允许我们在程序执行某些特定操作(例如方法调用、HTTP请求等)前后插入自定义的逻辑,从而实现功能扩展和定制。拦截器通常通过函数指针、回调函数或者钩子等机制来实现。
因此,AOP和拦截器的区别在于:
1. AOP是一种编程范式,而拦截器是一种设计模式。
2. AOP通过将程序功能分解成不同的关注点来实现代码复用和可维护性,而拦截器通过插入自定义逻辑来实现功能扩展和定制。
3. AOP通常使用切面、连接点和通知等概念来描述不同的关注点和它们的交互方式,而拦截器通常通过函数指针、回调函数或者钩子等机制来实现。