首页 > 学院 > 开发设计 > 正文

17、spring AOP通知——Pointcut、Advisor

2019-11-08 01:11:09
字体:
来源:转载
供稿:网友

17、sPRing AOP通知——Pointcut、Advisor

说明:在上一个例子spring AOP通知——Advice中,主要介绍了Advice的四种用法,但是被拦截的bean的所有方法都会被影响,实际上,我们通常只需要拦截一个或者若干个方法即可,而不是所有。

这里我们依然使用上一个例子的demo,但是需要做一些更改。

主要有以下三步即可实现:

第一步:设置目标被拦截的方法名,并且封装称为一个bean 在bean.xml配置文件中添加如下代码:

<!-- 设置切入点 printName --> <bean id="helloWorldPointcut" class="org.springframework.aop.support.NameMatchMethodPointcut"> <property name="mappedName" value="printName" /> </bean>

说明:该bean的property属性里的value,即是需要被拦截的方法名

第二步:声明切入点和代理的关系的bean

在bean.xml配置文件中添加如下代码:

<!-- 声明切入点和代理的关系的bean --> <bean id="helloWorldAdvisor" class="org.springframework.aop.support.DefaultPointcutAdvisor"> <property name="pointcut" ref="helloWorldPointcut" /> <property name="advice" ref="adviceAroundService" /> </bean>

第三步:更改代理 bean

<!-- 设置代理关系的bean --> <bean id="adviceServiceProxy" class="org.springframework.aop.framework.ProxyFactoryBean"> <!-- 被拦截的bean --> <property name="target" ref="helloWorld"/> <!-- 代理bean --> <property name="interceptorNames"> <list> <value>helloWorldAdvisor</value> </list> </property> </bean>

运行结果: 这里写图片描述


使用关键字拦截(正则表达式)

说明:在spring mvc项目中经常出现,例如拦截DAO,Service等等

就像下面这样:更改bean配置文件的

<!-- 声明切入点和代理的关系的bean --> <bean id="helloWorldAdvisor" class="org.springframework.aop.support.DefaultPointcutAdvisor"> <property name="patterns"> <list> <value>.*URL.*</value> </list> </property> <property name="advice" ref="adviceAroundService" /> </bean>
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表