Spring RegexpMethodPointcutAdvisor和NameMatchMethodPointcutAdvisor

http://www.cnblogs.com/65702708/archive/2012/08/14/2638514.html

Spring AOP中有两个PointcutAdvisor

——RegexpMethodPointcutAdvisor和 NameMatchMethodPointcutAdvisor,它们都在org.springframework.aop.support包中,

都可以过滤要拦截的方法,配置方法也大致相同,其中一个最主要的区别:
RegexpMethodPointcutAdvisor:需要加上完整的类名和方法名,例如:com.xw.methodname或com.*.methodname或.*methodname。需要加上完整类名,可以用Spring提供的匹配方式

NameMatchMethodPointcutAdvisor:只需要方法名,不用加类名:*methodname。

一个配置例子:

RegexpMethodPointcutAdvisor表示通过正则表达式进行切点描述的切面,它有一个pattern属性用来指定增强要应用到哪些类的哪些方法,也可以通过patterns属性指定多个表达式进行匹配。有一个advice属性用来表示要应用的增强,这样就能表示一个完整的切面了。
我们举几个例子用进一步认识正则表达式在配置匹配方法上的具体应用:
示例1:.*set.*表示所有类中的以set前缀的方法,如com.baobaotao.Waiter.setSalary(),
Person.setName()等;
示例2:com.advisor.*表示com.advisor包下所有类的所有方法;
示例3:com.service.*Service.* 牢匹配com.service包下所有类名以Service结尾的类的所有方法,如com.service.UserService.save(User user)、com.service.ForumService.update(Forum forum)等方法;
示例4:com.service.*.save.+ 匹配com.service包中所有类中所以save为前缀的方法。如匹配com.service.UserService类的saveUser()和saveLoginLog()方法,但不匹配该类中的save()方法。

1.RegexpMethodPointcutAdvisor

2.NameMatchMethodPointcutAdvisor