spring中的AOP有那五种通知及使用的条件?
时间: 2024-05-20 19:18:41 浏览: 16
在 Spring AOP 中,有以下五种通知:
1. 前置通知(Before Advice):在目标方法执行前执行。
2. 后置通知(After Advice):在目标方法执行后执行。不管目标方法是否抛出异常,后置通知都会执行。
3. 返回通知(After Returning Advice):在目标方法执行并返回结果后执行。如果目标方法抛出异常,则不执行。
4. 异常通知(After Throwing Advice):在目标方法抛出异常后执行。
5. 环绕通知(Around Advice):在目标方法执行前后都可以执行,可以控制目标方法的执行。
使用条件:
1. Spring AOP是基于代理的,所以只能对Spring管理的bean进行切面操作。
2. Spring AOP只支持方法级别的切面,不支持属性级别的切面。
3. Spring AOP只支持AspectJ注解风格的切面,不支持AspectJ XML风格的切面。
4. Spring AOP只支持方法拦截(包括public、protected、private等),不支持字段拦截。
5. Spring AOP只支持运行时切面,不支持编译时切面。
相关问题
SpringAOP中通知的类型有哪些?分别有什么作用?
Spring AOP中的通知类型有以下几种:
1. 前置通知(Before advice):在目标方法执行之前执行的通知。
2. 后置通知(After advice):在目标方法执行之后执行的通知,无论方法执行是否出现异常。
3. 返回通知(After returning advice):在目标方法执行完毕并返回结果之后执行的通知。
4. 异常通知(After throwing advice):在目标方法抛出异常时执行的通知。
5. 环绕通知(Around advice):包围目标方法的通知,可以在目标方法执行前后都执行自定义的操作。
这些通知类型可以通过Spring AOP的切面(Aspect)来应用到目标方法上。具体来说,前置通知可以用于执行一些预处理操作,比如权限检查、参数检查等;后置通知可以用于执行一些清理操作,比如资源释放等;返回通知可以用于获取目标方法执行的结果并做一些处理;异常通知可以用于记录日志或者发送告警等;环绕通知则可以用于实现自定义的拦截器或者过滤器,比如性能监控、事务管理等。
什么是 AOP?Spring 中如何使用 AOP
AOP(面向切面编程)是一种编程思想,它的目的是通过在程序中定义切面(Aspect),来实现对程序中各个模块的横向抽取,从而达到代码复用和逻辑分离的目的。
Spring框架中提供了对AOP的支持,可以通过配置和注解的方式来实现AOP。Spring AOP基于代理模式实现,它可以使用JDK动态代理或者CGLIB动态代理来生成代理对象,在目标对象执行前后插入切面逻辑。
Spring AOP中的术语:
- 切面(Aspect):切面是横切关注点的模块化,它包括了一组切点和一组通知。
- 连接点(Join point):连接点是在应用执行过程中能够插入切面的点,它通常表示方法的执行。
- 切点(Pointcut):切点是一组连接点的集合,它定义了在哪些连接点上应用通知。
- 通知(Advice):通知是在切面的某个特定连接点上执行的动作,它包括了“前置通知”、“后置通知”、“环绕通知”、“异常通知”和“最终通知”。
Spring中使用AOP的步骤:
- 定义切面类,即定义通知(Advice)和切点(Pointcut)。
- 将切面类声明为一个Bean。
- 在配置文件中启用AOP,配置切点和通知的关系。
- 在需要应用切面的Bean中引用切面Bean。
Spring AOP支持两种方式来定义切面:XML配置和注解配置。两种方式都可以实现AOP,XML配置相对繁琐,注解配置相对简单。