17、spring AOP通知——Pointcut、Advisor

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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值