SSM-Spring-13:Spring中RegexpMethodPointcutAdvisor正则方法切入点顾问

释放双眼,带上耳机,听听看~!

 

 


1
2
1------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥-------------
2

 

 

RegexpMethodPointcutAdvisor:正则方法切入点顾问

核心:

 

<property name="pattern" value=".\*do.\*"></property> 表示方法全名(包名,接口名,方法名)
运算符    名称     意义
.        点号      表示任意单个字符
+       加号      表示前一个字符出现一次或者多次
*       星号      表示前一个字符出现0次或者多次

具体使用案例:

 

一个实现俩个方法的类:SomeServiceImpl

 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1package cn.dawn.day16advisor02;
2
3
4/**
5 * Created by Dawn on 2018/3/8.
6 */
7public class SomeServiceImpl {
8    public void doSome() {
9        System.out.println(&quot;do something&quot;);
10    }
11    public void doAny() {
12        System.out.println(&quot;do Any&quot;);
13    }
14}
15

 

一个实现任意增强的接口的方法:此处是实现后置增强的,我起名LoggerAfter

 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
1package cn.dawn.day16advisor02;
2
3import org.springframework.aop.AfterReturningAdvice;
4
5import java.lang.reflect.Method;
6
7/**
8 * Created by Dawn on 2018/3/5.
9 */
10/*后置增强*/
11public class LoggerAfter implements AfterReturningAdvice {
12    public void afterReturning(Object o, Method method, Object[] objects, Object o1) throws Throwable {
13        System.out.println(&quot;===============after==================&quot;);
14    }
15}
16

 

大配置文件:

 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
1&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
2&lt;beans xmlns=&quot;http://www.springframework.org/schema/beans&quot;
3       xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
4       xmlns:aop=&quot;http://www.springframework.org/schema/aop&quot;
5       xmlns:p=&quot;http://www.springframework.org/schema/p&quot; xmlns:context=&quot;http://www.springframework.org/schema/context&quot;
6       xsi:schemaLocation=&quot;http://www.springframework.org/schema/beans
7       http://www.springframework.org/schema/beans/spring-beans.xsd
8       http://www.springframework.org/schema/aop
9       http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd&quot;&gt;
10    &lt;!--要增强的对象--&gt;
11    &lt;bean id=&quot;service&quot; class=&quot;cn.dawn.day16advisor02.SomeServiceImpl&quot;&gt;&lt;/bean&gt;
12    &lt;!--增强的内容--&gt;
13    &lt;bean id=&quot;myadvice&quot; class=&quot;cn.dawn.day16advisor02.LoggerAfter&quot;&gt;&lt;/bean&gt;
14    &lt;!--顾问--&gt;
15    &lt;bean id=&quot;myadvisor&quot; class=&quot;org.springframework.aop.support.RegexpMethodPointcutAdvisor&quot;&gt;
16        &lt;property name=&quot;advice&quot; ref=&quot;myadvice&quot;&gt;&lt;/property&gt;
17        &lt;property name=&quot;pattern&quot; value=&quot;.*do.*&quot;&gt;&lt;/property&gt;
18        &lt;!--上面那个name还有一个可以是patterns,value可以写多个正则。用逗号分割,匹配多个正则,方法名只要合适其中一个正则就增强--&gt;
19    &lt;/bean&gt;
20    &lt;!--代理工厂bean--&gt;
21    &lt;bean id=&quot;proxyfactory&quot; class=&quot;org.springframework.aop.framework.ProxyFactoryBean&quot;&gt;
22        &lt;!--要增强的对象--&gt;
23        &lt;property name=&quot;target&quot; ref=&quot;service&quot;&gt;&lt;/property&gt;
24        &lt;!--增强的内容--&gt;
25        &lt;property name=&quot;interceptorNames&quot; value=&quot;myadvisor&quot;&gt;&lt;/property&gt;
26    &lt;/bean&gt;
27
28&lt;/beans&gt;
29

 

单测方法:

 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
1package cn.dawn.day16advisor02;
2
3
4import org.junit.Test;
5import org.springframework.context.ApplicationContext;
6import org.springframework.context.support.ClassPathXmlApplicationContext;
7
8/**
9 * Created by Dawn on 2018/3/3.
10 */
11public class test20180310 {
12    @Test
13    /*aop代理工厂bean异常增强*/
14    public void t01(){
15        ApplicationContext context=new ClassPathXmlApplicationContext(&quot;ApplicationContext-day16advisor02.xml&quot;);
16        SomeServiceImpl service = (SomeServiceImpl) context.getBean(&quot;proxyfactory&quot;);
17
18        service.doSome();
19        service.doAny();
20
21    }
22}
23

 

给TA打赏
共{{data.count}}人
人已打赏
安全技术

spring cache

2022-1-11 12:36:11

安全技术

比特币全节点Go语言实现BTCD之地址编码解析

2022-1-12 12:36:11

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索