- 浏览: 455205 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (178)
- linux (25)
- java (31)
- eclipse (3)
- web (19)
- database (11)
- framework (7)
- spring (1)
- jbpm (1)
- error and solution (3)
- struts2 (3)
- hibernate (12)
- other (15)
- ubuntu (2)
- build tools (1)
- 服务器配置 (3)
- extjs (2)
- ssl相关 (1)
- 项目管理 (0)
- 软件测试 (0)
- java maven2 (2)
- Windows Server 2003 (1)
- glassfish (1)
- build tools,maven (2)
- Heritrix3 (1)
最新评论
-
lbs1026:
您好,卸载后怎么再装上去呢?
java中dll文件的加载和卸载。 -
mp19901204:
请教下,能通过js播放指定的影片吗。不刷新网页,用js直接调用 ...
Flv播放器 Vcastr3.0的用法参考 -
wiflish:
hanmiao 写道试了第壹個,好用。
使maven2在下载依赖包的同时下载其源代码包。 -
hanmiao:
试了第壹個,好用。
使maven2在下载依赖包的同时下载其源代码包。 -
chuanwang66:
请问Heritrix 3.1.0 你是怎么配置进Eclipse ...
Heritrix3.1.0RC1使用Cookie不能自动登录问题的一个解决办法
pointcut,从字面的意思说的是切面的意思。也就是横切的时候,会有哪些执行点会被识别。只有先识别了,才能执行相应的Advice。
基本的定义如下:
public pointcut accountOperations:call(* Account.*(..))
1.通配符和pointcut 操作符
* 表示任何数量的字符,除了(.)
.. 表示任何数量的字符包括任何数量的(.)
+ 描述指定类型的任何子类或者子接口
同java一样,提供了一元和二元的条件表达操作符。
一元操作符:!
二元操作符:||和&&
优先权同java
2.签名语法
类型签名样式
主要的例子:
Account 类型Account
*Account 使用Account名称结束的类型,如SavingsAccount和CheckingAccount
java.*.Date 类型Date在任何直接的java子包中,如java.util.Date和java.sql.Date
java..* 任何在java包或者所有子包中的类型,如java.awt和java.util或者java.awt.event 和java.util.logging
javax..*Model+ 所有javax包或者子包中以Model结尾的类型和其所有子类,如TableModel,TreeModel。
!vector 所有除了Vector的类型
Vector|| Hashtable Vector或者Hashtable类型
java.util.RandomAccess+ 实现RandomAccess和List的所有子类
&& java.util.List+
方法和构造器签名模式
public void Collection.clear():
在Collection中同样签名的clear方法
public void Account.debit(float) throws InsufficientBalanceException:
Account中同样签名的debit方法
public void Account.set*(*)
Account中以set开头,并且只有一个参数类型的方法
public void Account.*()
Account中所有的没有参数的public void 方法
public * Account.*()
Account中所有没有参数的public 方法
public * Account.*(..)
Account中所有的public 方法
* Account.*(..)
Account中的所有方法,包括private方法
!public * Account.*(..)
所有的非public 方法
* Account+.*(..)
所有的方法,包括子类的方法
* java.io.Reader.read(..)
所有的read方法
* java.io.Reader.read(char[],..)
所有以read(char[])开始的方法,包括read(char[])和read(char[],int,int)
* javax..*.add*Listener(EventListener+)
命名以add开始,以Listener结尾的方法,参数中为EventListener或子类
* *.*(..) throws RemoteException
抛出RemoteException的所有方法
构造器,同上面
public Account.new()
没有参数的构造器方法
属性签名模式
同方法一样,属性也查不多
* Account.*
所有的Account属性
!public static * banking..*.*
所有的非public static 属性,在banking的包或者子包中
3.主要的pointcuts类型
分类pointcuts
遵循特定的语法用于捕获每一个种类的可使用连接点。
主要的种类:
方法执行:execution(MethodSignature)
方法调用:call(MethodSignature)
构造器执行:execution(ConstructorSignature)
构造器调用:call(ConstructorSignature)
类初始化:staticinitialization(TypeSignature)
属性读操作:get(FieldSignature)
属性写操作:set(FieldSignature)
例外处理执行:handler(TypeSignature)
对象初始化:initialization(ConstructorSignature)
对象预先初始化:preinitialization(ConstructorSignature)
Advice执行:adviceexecution()
基于控制流的pointcuts
主要包括两种类型的控制流:
cflow(Pointcut),捕获所有的连接点在指定的方法执行中,包括执行方法本身。
cflowbelow(Pointcut),捕获所有的连接点在指定的方法执行中,除了执行方法本身。
如以下的例子:
cflow(call(* Account.debit(..))
所有的debit方法中的连接点,包括debit方法本身
cflowbelow(call(* Account.debit(..))
所有debit方法中的连接点,除了debit方法本身
cflow(transactedOperations())
所有由transactedOperations捕获的连接点
cflowbelow(execution(Account.new(..))
所有在Account 构造器中执行的连接点
基于词汇结构的连接点
源代码片断。,如within()和withincode()
within :捕获在指定类或者方面中的程序体中的所有连接点,包括内部类。
Withincode:用于捕获在构造器或者方法中的所有连接点,包括在其中的本地类
执行对象连接点
匹配this,和target对象,作为方法被调用的对象。
this(Account),所有Account的实例的执行点,匹配所有的连接点,如方法调用,属性设置,当前的执行对象为Account,或者其子类。
target(Account):匹配所有的连接点,目标对象为Account或其子类。
必须执行相应的类型,不能使用*,或者..通配符。当前静态方法,不能被匹配。
在within()和this()中的区别:
一个是程序体,而另一个为对象执行。
参数pointcuts
用于捕获参数类型的连接点。
args(String,..,int)
args(RemoteException)
条件检测pointcuts
if(System.currentTimeMillis()>triggerTime)
AspectJ5 已经增加了不少语法,主要关于Annotation 的
评论
发表评论
-
《架构之美》笔记
2013-12-04 21:02 0美丽架构的特性: 1、概念完整性(来自于处理问题的一致性) ... -
【转】生产环境下JAVA进程高CPU占用故障排查
2013-11-01 16:36 1380转自: http://blog.chinaunix.net/ ... -
在maven生成eclipse文件时,使项目支持wtp的方式
2011-12-18 00:37 1171使项目能支持wtp: maven eclipse:ec ... -
解决Maven编译出现警告时,就提示编译失败的问题
2011-08-18 19:42 2045解决Maven编译出现警告时,就提示编译失败的问题 原因:m ... -
进入Glassfish3管理控制台太慢的解决办法
2011-07-07 14:53 1627解决办法:关闭Glassfish的网络链接。 配置方法 ... -
OSGi4.2规范的Bundle Manifest Headers列表
2010-01-22 17:40 2431OSGi4.2规范的Bundle Manifest ... -
VisualVM远程监控
2009-11-18 17:28 2576VisualVM是集成了多个JDK命令工具的一个可视化 ... -
maven-war插件打包war时,过滤掉指定文件或目录的配置方法
2009-09-09 11:53 17078<plugin> <artifac ... -
quartz中的CronTriggers表达式含义
2009-09-08 10:58 1013http://www.opensymphony.com/qua ... -
Spring-Security 2 中从数据库中读取权限的实现方式
2009-07-22 21:29 3524security的配置片段: < ... -
关于Bad version number in .class file错误
2009-04-01 10:54 1072出现Bad version number in .class ... -
maven报错。
2009-03-22 00:07 1591错误信息:[INFO] Required goal not f ... -
java处理视频
2009-01-12 22:42 3843目前绝大多数视频网站使用的格式是flv。格式可以任意位置播放, ... -
Xdoclet的标签及用法
2006-05-11 11:43 814参照链接: Xdoclet的标签及用法 -
原创:eclipse反编译插件Jadclipse介绍
2006-05-16 15:23 849jadclips插件网站:http://jadclipse.s ... -
ant中宏定义例子
2006-05-18 16:47 1571一个ant中用于编译的宏定义例子: 1 ... -
Google Web Toolkit
2006-05-22 14:12 803Google Web Toolkit (GWT) is a J ... -
[转]java基本类装入异常
2006-05-24 16:24 1097原文链接:http://www-128.ibm.co ... -
安装和卸载Mysql的windows系统服务
2006-05-26 15:20 1129安装mysql的windows系统服务: ${mysql.h ... -
通过java获取系统环境变量
2006-07-03 17:11 3637代码如下: 1 public static ...
相关推荐
跟我学Spring3(6.5)AspectJ切入点语法详解Java开发Java经验技巧共10页.pdf.zip
Aop框架AspectJ 的语法介绍JPoint Pointcut Signature
关于AspectJ的比较简要的PPT,原作者对AspectJ进行了简洁明了的介绍,易懂,
我们首先介绍了@Pointcut注解的作用和其在AspectJ框架中的重要性。然后,我们详细解释了@Pointcut注解的语法和常用的切点表达式规则。 为了帮助读者更好地理解@Pointcut注解的实际应用,我们提供了一个完整的Spring...
spring-framework-3.1.1.RELEASE jdk1.7 环境下 can't find referenced pointcut 问题解决 换了对应的jar文件即可 aspectjrt.jar aspectj-1.6.6.jar aspectjweaver.jar
aspectj-1.7.0.jar aspectj的包
aspectj-1.8.10.jar org.aspectj.lang.annotation.* org.aspectj.lang.annotation.Pointcut
aspectj
SpringAOPAspectJ切入点语法详解
基于XML的声明式AspectJ 元素及其子元素如下: 小提示:图中灰色部分标注的元素即为常用的配置元素 XML文件中常用元素的配置方式如下: 基于XML的声明式AspectJ <bean id="myAspect" class="com.itheima.aspectj....
aspectj-1.6至1.8各发布版本jar包,解决错误日志:error the @annotation pointcut expression is only supported at Java 5 compliance level or above
Aspectj驱动Aspectj驱动Aspectj驱动Aspectj驱动Aspectj驱动Aspectj驱动Aspectj驱动Aspectj驱动Aspectj驱动Aspectj驱动
AspectJ 1.9 最新1.9第二版,包含源码。AspectJ是一个面向切面的框架,它扩展了Java语言。AspectJ定义了AOP语法,所以它有一个专门的编译器用来生成遵守Java字节编码规范的Class文件
要在 Spring 应用中使用 AspectJ 注解, 必须在 classpath 下包含 AspectJ 类库: aopalliance.jar、aspectj.weaver.jar 和 spring-aspects.jar等jar包,文件已打包上传。
org.aspectj,aspectj项目库(org.aspectj).zip,建筑物
·关于方面、切入点、通知以及核心aop构造的每个方面的秘诀 ·在java和j2ee设计模式实现中使用方面 ·使用aop特有的设计模式,增强现有的java应用程序 本书展示了为什么以及如何使用aop技术来解决常见的java...
Aspectj开发指南 博文链接:https://g007n.iteye.com/blog/249602
aspectj架包,版本号:aspectj-1.6.9.jar
学习aspectJ,帮助学习面向方面的知识。
精通AspectJ(面向方面的java编程指南)一书的示例代码。