
------ AspectJ
文章平均质量分 88
KLeonard
这个作者很懒,什么都没留下…
展开
-
AspectJ——切入点语法(6)之cflow与cflowbelow
捕获基于控制流程的连接点cflow与cflowbelow提供了一种捕获一个pointcut控制流中所有连接点的功能。0.cflow的用法假如你想捕获在程序控制流程内遇到的所有连接点,这些连接点都在某一个特定的连接点之后,你可以考虑使用cflow。什么是程序控制流?程序控制流就是程序执行过程中的每一行代码,准确的说是每行代码编译后的字节码。一个方法的控制流包括方法中的每一行代码,...原创 2018-05-09 13:39:20 · 1981 阅读 · 0 评论 -
AspectJ——切入点语法(4)之捕获属性上的连接点
捕获属性上的连接点AspectJ提供了get(Signature)和set(Signature)切入点的形式,来捕获可能发生在类属性上的任何访问和修改。这也是AspectJ的一个比较受争议的特性,因为它会有效地破坏类的封装性,特别是当把被监视的属性声明为protected或者private时。所以这两个属性可以提供强大的手段来通知类,但是必须小心地使用它们。0.捕获对属性的访问...原创 2018-05-07 21:10:30 · 1381 阅读 · 0 评论 -
AspectJ——切入点语法(3)之捕获类和对象构造上的连接点
捕获类和对象构造上的连接点在Java中,一个类在实例化之前要经过三个步骤:装载、连接、初始化。装载即通过类型的完全限定名,产生一个代表该类型的二进制数据流,解析这个二进制数据流为方法区内的内部数据结构,并且创建一个表示该类型的java.lang.Class类的实例。连接即Java虚拟机为类变量分配内存,设置默认的初始值,并且解析变量。初始化主要完成对静态变量的初始化、静态块执行等工作,Java...原创 2018-05-07 19:38:20 · 2651 阅读 · 1 评论 -
AspectJ——切入点语法(2)之捕获异常处理上的连接点
捕获异常处理上的连接点在Java中抛出异常时,会将其向上传递给调用链,直到它被try/catch块中的catch语句处理,或者它到达Java运行库并在控制台上引发一条出错的消息。如果捕获到Java异常,就会把该异常作为一个对象传递给相应的catch语句,在其中处理该异常。使用切面可以捕获异常的处理,其应用的场景可以是:除了catch块的正常异常处理行为之外,使用切面还需要做某些事情;或者干...原创 2018-05-06 17:08:31 · 4484 阅读 · 0 评论 -
AspectJ——简介以及在IntelliJ IDEA下的配置
0.AspectJ简介在上篇文章【Spring——AOP(1)之Spring1中的配置】中,简要介绍了AOP(Aspect-Oriented Programming,面向切面编程)的概念,并介绍了AOP中的一些术语,最后通过使用Spring1中编写切面、配置切面的方式讲解了一个案例。本节我们介绍AspectJ框架,学习AspectJ框架是因为Spring2以后的AOP开发中引入了很多Aspec...原创 2018-05-01 15:40:08 · 23610 阅读 · 29 评论 -
AspectJ——切入点语法(1)之捕获方法上的连接点
捕获方法上的连接点0.捕获方法调用在调用具有特定签名的方法时,你想捕获它,可以使用call(Signature)切入点,它的语法是:pointcut [切入点名字](参数列表): call(<可选的方法修饰符> [返回类型] [类名].[方法名]([参数类型]))注意三点:1.call(Signature)是在方法调用上触发通知,其环境是调用类。2.Si...原创 2018-05-05 22:54:58 · 2995 阅读 · 0 评论 -
AspectJ——基于注解的开发方式
基于注解的开发方式AspectJ5版本支持了基于注解的开发方式,当然其仍然需要AspectJ自己的编译器。要使用基于注解的开发方式,需要为项目引入aspectjweaver.jar包,该Jar包也在AspectJ安装目录下的lib目录中。aspectjweaver.jar中包含了aspectjrt.jar包中的内容,所以只需要引入aspectjweaver.jar包即可。0.一个示...原创 2018-05-11 10:46:07 · 8741 阅读 · 1 评论 -
AspectJ——切入点语法(7)之this、target、args、if以及逻辑运算
更多的切入点语法本节介绍AspectJ中更多的切入点语法,有很多在之前都用过,这里做一个总结。0.捕获this引用的是特定类型对象的连接点AspectJ提供了this原生切入点来捕获所有的连接点,这些连接点处的this引用的是一个特定的类型。我们在Test13包下做测试,首先业务类Service如下:package Test13;public class Servi...原创 2018-05-10 15:40:48 · 2874 阅读 · 0 评论 -
AspectJ——定义通知
定义通知切入点定义了你对哪些连接点感兴趣,通知则定义了当遇到这些连接点时要做什么。通过块包含直观的Java代码,它看起来非常像Java方法,只不过不能从应用程序中调用它。0.前置通知前面的大部分示例都使用了before()前置通知,它在触发它的连接点之前执行通知。关于它的用法这里不再赘述。这里只贴一个之前的切面例子:package Test10;public aspec...原创 2018-05-09 14:59:50 · 1087 阅读 · 0 评论 -
AspectJ——切入点语法(5)之限制连接点的作用域
限制连接点的作用域在定义切入点的时候,我们经常遇到的需求是:基于所关注的程序作用域,限制捕获连接点的范围。本节将介绍within以及withincode的用法。within可以指定切入点的作用域在包中或者类中,withincode可以通过方法签名限制连接点的作用域在方法中。0.捕获特定类中的所有连接点首先,我们使用within(TypePattern)切入点来捕获特定类中的所有...原创 2018-05-08 13:49:47 · 1414 阅读 · 0 评论