spring AOP术语

[color=olive]
1、连接点(Joinpoint)

程序执行的某个特定位置:如类开始初始化前、类初始化后、类某个方法调用前、调用后、方法抛出异常后。这些代码中的特定点,称为“连接点”。Spring仅支持方法的连接点,即仅能在方法调用前、方法调用后、方法抛出异常时以及方法调用前后这些程序执行点织入增强。



2、切点(Pointcut)

每个程序类都拥有多个连接点,如一个拥有两个方法的类,这两个方法都是连接点。但在这为数众多的连接点中,如何定位到某个感兴趣的连接点上呢?AOP通过“切点”定位特定的连接点。通过数据库查询的概念来理解切点和连接点的关系:连接点相当于数据库中的记录,而切点相当于查询条件。一个切点可以匹配多个连接点。

Spring中,切点通过Pointcut接口进行描述。



3、增强(Advice)

增强是织入到目标类连接点上的一段程序代码。增强既包含了用于添加到目标连接点上的一段执行逻辑,又包含了用于定位连接点的方为信息,所以Spring所提供的增强接口都是带方位名的:BeforeAdvice(方法调用前的位置)、AfterReturningAdvice(访问返回后的位置)、ThrowsAdvice等。



4、目标对象(Target)

增强逻辑的织入目标类。



5、织入(Weaving)

织入是将增强添加到目标类具体连接点上的过程。AOP有三种织入方式:

1)编译期织入,这要求使用特殊的Java编译器;

2)类装载期织入,这要求使用特殊的类装载器;

3)动态代理织入,在运行期为目标类添加增强生成子类的方式。

Spring采用动态代理织入,而AspectJ采用编译期织入和类装载期织入。



6、切面(Aspect)

切面由切点和增强组成,它既包括了横切逻辑的定义,也包括了连接点的定义,Spring AOP就是负责实施切面的框架,它将切面所定义的横切逻辑织入到切面所指定的连接点中。



AOP的工作重心,主要包括两个:

1)如何通过切点和增强定位到连接点上;

2)如何在增强中编写切面的代码。



7、其他基础知识

Spring AOP使用了两种代理机制:一种是基于JDK的动态代理,另一种是基于CGLib的动态代理。之所以需要两种代理机制,很大程度上是因为JDK本身只提供接口的代理,而不支持类的代理。

JDK的动态代理主要涉及到java.lang.reflect包中的两个类:Proxy和InvocationHandler。

CGLib采用非常底层的字节码技术,可以为一个类创建子类,并在子类中采用方法拦截的技术拦截所有父类方法的调用。

有研究表明,CGLib所创建的动态代理对象的性能比JDK的所创建的代理对象的性能高了不少。但CGLib在创建代理对象时所花费的时间却比JDK动态代理多,所以对于singleton的代理对象或者具有实例池的代理,因为无须频繁创建代理对象,所以比较适合用CGLib动态代理技术,反之则适合用JDK动态代理技术。 CGLib不能对目标类中的final方法进行代理。
[/color]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring AOP(Aspect-Oriented Programming)是Spring框架中的一个重要模块,用于实现面向切面编程。下面是一些与Spring AOP相关的术语: 1. 切面(Aspect):切面是一个模块化的、跨越多个类的关注点的定义。它可以包含一组通知和切点。 2. 通知(Advice):通知是在切面的特定连接点上执行的代码。在Spring AOP中,有以下几种类型的通知: - 前置通知(Before Advice):在目标方法执行之前执行。 - 后置通知(After Advice):在目标方法执行之后执行,无论是否发生异常。 - 返回通知(After Returning Advice):在目标方法成功执行并返回结果后执行。 - 异常通知(After Throwing Advice):在目标方法抛出异常后执行。 - 环绕通知(Around Advice):包围目标方法的整个执行过程,在目标方法执行前后都可以执行自定义的逻辑。 3. 切点(Pointcut):切点是一个表达式,用于匹配连接点。连接点是在应用程序中可以插入切面的点,如方法调用、方法执行、异常处理等。 4. 连接点(Joinpoint):连接点是在应用程序中可以插入切面的点,如方法调用、方法执行、异常处理等。 5. 引入(Introduction):引入是一种在不修改目标类代码的情况下,为目标类添加新的方法或属性的方式。 6. 织入(Weaving):织入是将切面应用到目标对象并创建新的代理对象的过程。织入可以在编译时、类加载时或运行时进行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值