sping面向切面编程怎么实现引入通知

76次阅读
没有评论

共计 2020 个字符,预计需要花费 6 分钟才能阅读完成。

这篇文章主要介绍“sping 面向切面编程怎么实现引入通知”,在日常操作中,相信很多人在 sping 面向切面编程怎么实现引入通知问题上存在疑惑,丸趣 TV 小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”sping 面向切面编程怎么实现引入通知”的疑惑有所帮助!接下来,请跟着丸趣 TV 小编一起来学习吧!

引入通知的目的就是在任意的连接点引入我想要的通知,例如前面四个通知案例的运行结果:

前置通知被调用 调用环绕通知前 hi  王大锤 调用环绕通知后 后置通知被调用 前置通知被调用 调用环绕通知前 bye  王大锤 调用环绕通知后 后置通知被调用

可以看出在被代理类 Test1Service 的 sayHello()以及 sayBye()方法(这个两个连接点)切入通知;可是现在我只想在 sayHello()方法(这一个连接点)上切入通知该怎么办呢?这就要使用到引入通知,其实说白了就是在配置文件中进行配置。(我现在要求环绕通知只切入到 sayHello()方法上)

修改前面案例的配置文件 beans.xml:

?xml version= 1.0 encoding= UTF-8 ?
beans xmlns= http://www.springframework.org/schema/beans
   xmlns:xsi= http://www.w3.org/2001/XMLSchema-instance xmlns:p= http://www.springframework.org/schema/p
   xsi:schemaLocation= http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

    !– 配置被代理的对象 —
    bean id= test1Service >      property name= name value= 王大锤 /
    /bean
    !– 配置前置通知 —
    bean id= myMethodBeforeAdvice >
    !– 配置后置通知 —
    bean id= myMethodAfterAdvice >
    !– 配置环绕通知 —
    bean id= myMethodAroundAdvice >
    !– 配置异常通知 —

    bean id= myMethodThrowsAdvice >
    !– 引入通知定义通知的切入点 —
    bean id= annotationAdvice
      >      property name= advice ref= myMethodAroundAdvice /property
      property name= mappedNames
        list
          value sayHello /value
        /list
      /property
    /bean

    !– 配置代理对象(代理对象不需要我们自己写,已经有现成的 ProxyFactoryBean 类存在了)—
    bean id= proxyFactoryBean >      !– 代理接口集 —
      property name= proxyInterfaces
        list
          !–ProxyFactoryBean 类会实现下列接口(必须是接口的全路径)—
          value com.hubin.aop.TestServiceInter /value
          value com.hubin.aop.TestServiceInter2 /value
        /list
      /property

      !– 把通知织入到代理对象相当于将通知和代理对象关联 —
      property name= interceptorNames
        list
          !– 必须和配置通知的 ben 的 id 对应值是相同的 —
          value myMethodBeforeAdvice /value
          value myMethodAfterAdvice /value

          !– 绑定引用通知 —
          value annotationAdvice /value
          value myMethodThrowsAdvice /value
        /list
      /property

      !– 配置被代理对象,ref 必须和配置代理对象的 id 对应值相同 —
      property name= target ref= test1Service /
    /bean
/beans

运行结果:

前置通知被调用
调用环绕通知前
hi 王大锤
调用环绕通知后
后置通知被调用
前置通知被调用
bye 王大锤
后置通知被调用

到此,关于“sping 面向切面编程怎么实现引入通知”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注丸趣 TV 网站,丸趣 TV 小编会继续努力为大家带来更多实用的文章!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-16发表,共计2020字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)