静态正则表达式方法匹配切面

来源:互联网 发布:java疯狂讲义txt下载 编辑:程序博客网 时间:2024/06/10 16:25


1、配置文件


<!-- 正则表达式方法名匹配切面 --><bean id="regexpAdvisor"class="org.springframework.aop.support.RegexpMethodPointcutAdvisor"p:advice-ref="greetingAdvice"><!--            用正则表达式定义目标类全限定方法名(带类名的方法名)的匹配模式串     pattern 如果只有一个,可以用这个属性    patterns 定义多个匹配模式串,这些匹配模式串之间是或的关系    order 切面在织入时对应的顺序    --><property name="patterns"><list><value>.*greet.*</value></list></property></bean><bean id="waiter1" class="org.springframework.aop.framework.ProxyFactoryBean"p:interceptorNames="regexpAdvisor" p:target-ref="waiterTarget"p:proxyTargetClass="true" />

常见的匹配写法:

(1).*set.*   所有的类中以set前缀的方法

(2)com\.baobaotao\.advisor\..*  表示com.baobaotao.advisor包下所有类的所有方法

(3)com\.baobaotao\.service\..Service\..*  匹配com.baobaotao.service包下所有类名以Service结尾的类的所有方法

(4)com\.baobaotao\.service\..*\.save.+  匹配所有以save为前缀的方法,该方法后还必须拥有至少一个字符,且这些方法位于com.baobaotao.service包中以Service为后缀的类中。


2、测试类


String configPath = "com/baobaotao/advisor/beans.xml";ApplicationContext ctx = new ClassPathXmlApplicationContext(configPath);Waiter waiter = (Waiter)ctx.getBean("waiter1");waiter.greetTo("John");waiter.serveTo("John");

运行的结果如下:

com.baobaotao.advisor.Waiter.greetToHow are you!Mr.John.waiter greet to John...waiter serving John...










0 0
原创粉丝点击