标签:修饰符 aop ber 方法参数 class 匹配 介绍 接受 cat
一、切入点语法
1)通配符
AOP支持的通配符:
*:匹配任何数量字符
..:匹配任何数量字符的重复,在类型模式中匹配任何数量子包,在方法参数模式中匹配任何数量参数
+:匹配指定类型的子类型,仅能作为后缀放在类型模式后边
实例:
java.lang.String 匹配String类型 java.*.String 匹配java包下的任何“一级子包”下的String类型,如匹配java.lang.String,但匹配java.String或java.lang.ss.String java..* 匹配java包及任何子包下的任何类型,如java.String、java.lang.String java.lang.*ing 匹配任何java.lang包下的以ing结尾的类型 java.lang.Number+ 匹配任何java.lang.Number的子类型,如java.lang.Integer、java.math.BigInteger
2)类型匹配,语法如下:
注解? 类的全限定名
3)方法匹配,语法如下:
注解? 修饰符? 返回值类型 类型声明?方法名(参数列表) 异常列表?
4)切入点表达式逻辑运算符
AOP使用 且(&&)、或(||)、非(!)来组合切入点表达式
在XML中,“&&”须使用转义字符“&&”代替,不方便,因此Spring提供了and、or、not来代替&&、||、!
注意:替代符(and、or、not)仅在xml中可用,注解方式使用时会解析错误
5)execution命令 使用“execution(方法表达式)”匹配方法执行
实例:
public * *(..) 任何公共方法的执行 * cn.javass..*.*(..) cn.javass包及所有子包下任何类的任何方法 * cn.javass..IPointcutService.*(*) cn.javass包及所有子包下IPointcutService接口的任何只有一个参数方法 * cn.javass..IPointcutService+.*() cn.javass包及所有子包下IPointcutService接口及子类型的的任何无参方法 * (cn.javass..IPointcutService+&& java.io.Serializable+).*(..) 任何实现了cn.javass包及所有子包下IPointcutService接口和java.io.Serializable接口的类型的任何方法 @java.lang.Deprecated @cn.javass..Secure * *(..) 任何持有@java.lang.Deprecated和@cn.javass..Secure注解的方法 * (@cn.javass..Secure *).*(..) 任何定义方法的类型持有@cn.javass..Secure的方法
二、
标签:修饰符 aop ber 方法参数 class 匹配 介绍 接受 cat
原文地址:https://www.cnblogs.com/MattCheng/p/8960944.html