简述springAOP织入
时间: 2024-10-09 11:00:24 浏览: 31
Spring AOP (Aspect Oriented Programming) 是一种编程范式,它将关注点从业务逻辑分离到系统的其他方面,如日志记录、事务管理、安全控制等,称为切面(Aspect)。在Spring框架中,织入(Weaving)是指将AOP通知(Advice,比如前置通知、后置通知等)插入到目标对象的行为中,而无需修改原始代码。
Spring支持两种织入方式:
1. **动态代理**: Spring在运行时创建代理对象,通过字节码操作(JDK的动态代理或者CGLIB库)来拦截并增强方法调用。这是默认的织入方式。
2. **源码生成**:对于某些复杂的场景,Spring可以使用注解处理器(@AspectJ)配合AspectJ库,直接修改源码进行织入。
Spring AOP的核心组件包括:
- **切面(Aspect)**: 定义了横切关注点的模块。
- **通知(Advice)**: 实现对指定连接点的操作,如前置通知在方法执行前执行,后置通知在方法执行后执行。
- **连接点(Join Point)**: 通知应用的地方,如方法执行、构造函数调用等。
- **切点(Pointcut)**: 指定哪些连接点应该应用特定的通知。
相关问题
简述Spring AOP的常用术语
Spring AOP是基于面向切面编程的框架,常用术语包括:
1. 切面(Aspect):切面是一个模块化的关注点,它通过一系列的切点和通知来定义在目标对象上执行的行为。
2. 切点(Pointcut):切点是在应用程序中选择一个或多个连接点的过程。连接点是在应用程序执行过程中能够插入一个切面的点,如方法调用、异常处理等。
3. 通知(Advice):通知是在切面的某个特定连接点上执行的动作。Spring AOP支持5种类型的通知,包括前置通知、后置通知、返回通知、异常通知和环绕通知。
4. 引入(Introduction):引入允许为一个现有的Java对象添加新的接口,从而使得该对象可以实现新的行为。
5. 织入(Weaving):织入是将切面与其他应用程序类型或对象链接在一起,从而创建一个新的增强对象的过程。
简述springaop中切面和切点的区别
在Spring AOP中,切面(Aspect)和切点(Pointcut)是两个重要的概念,它们的作用不同。
切面是一组横切关注点的集合,它们可以被模块化并横向抽取。切面可以定义在一个或多个对象中,当一个程序运行时,它可以根据需要将这些切面织入到该程序的对象中。
切点是指一个或多个连接点的集合,它们被定义为切点表达式。切点表达式定义了哪些方法调用应该被拦截,以及在何处拦截它们。切点表达式可以基于方法的名称、参数的类型、返回类型等。
简而言之,切面是一组行为的集合,切点是一个规则的集合。切点定义了哪些方法应该被拦截,而切面定义了在这些方法调用前、后或者中间应该做什么操作。
阅读全文