<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    jinfeng_wang

    G-G-S,D-D-U!

    BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
      400 Posts :: 0 Stories :: 296 Comments :: 0 Trackbacks

    Spring AOP中的pointcut

    PointCuts用于定義所需要“攔截”的class及其method。分為靜態(tài)、動態(tài)兩種pointcut。其中靜態(tài)pointcuts僅和class name, method name相關(guān),可以在配置文件中通過正則表達式進行部署,因此它們都可以在運行前進行確認。而動態(tài)pointcuts則需要考慮到方法的參數(shù),在運行時動態(tài)的確認pointcuts。一般來說,都是根據(jù)methodclass的名字來進行。其涉及到的接口如下定義:

    public interface Pointcut {

        ClassFilter getClassFilter();

        MethodMatcher getMethodMatcher();

    }

    public interface ClassFilter {

        boolean matches(Class clazz);

    }

    public interface MethodMatcher {

        boolean matches(Method m, Class targetClass);

        boolean isRuntime();

        boolean matches(Method m, Class targetClass, Object[] args);

    }

    兩種靜態(tài)pointcut的實現(xiàn):

    NameMatchMethodPointcut:只能對方法名進行判別。

    RegexpMethodPointcut:可以對類名、方法名使用正則表達式判別。

    <beans>

           <bean id="maidServiceTarget"

                  class="com.springinaction.chapter03.cleaning.MaidService"/>

          

           <bean id="queryInterceptor" class="com.springinaction.chapter03.cleaning.QueryInterceptor"/>

     

           <bean id="queryPointcutAdvisor"

                  class="org.springframework.aop.support.RegExpPointcutAdvisor">

                  <property name="pattern">

                         <value>.*get.+By.+</value>

                  </property>

                  <property name="advice">

                         <ref bean="queryInterceptor"/>

                  </property>

           </bean>

          

           <bean id="maidService"

                  class="org.springframework.aop.framework.ProxyFactoryBean">

                  <property name="proxyInterfaces">

                         <value>com.springinaction.chapter03.cleaning.MaidService</value>

                  </property>

                  <property name="interceptorNames">

                         <list>

                                <value>queryPointcutAdvisor</value>

                         </list>

                  </property>

                  <property name="target">

                         <value ref="maidServiceTarget">

                  </property>

           </bean>

    </beans>

    一種動態(tài)pointcut的實現(xiàn):

    ControlFlowPointcut:根據(jù)當前運行棧的情況,決定當前的advice是否需要被觸發(fā)。因為它完全基于運行時棧的情況做決策,所以運行速度肯定會變慢。

    <beans>

           <bean id="myServiceTarget" class="MyServiceImpl"/>

          

           <bean id="servletInterceptor" class="MyServletInterceptor"/>

          

           <bean id="servletPointcut" class="org.springframework.aop.support.ControlFlowPointcut">

                  <constructor-arg>

                         <value>javax.servlet.http.HttpServlet</value>

                  </constructor-arg>

           </bean>

     

           <bean id="servletAdvisor" class="org.springframework.aop.support.DefaultPointcutAdvisor">

                  <property name="advice">

                         <ref bean="servletInterceptor"/>

                  </property>

                  <property name="pointcut">

                         <ref bean="servletPointcut"/>

                  </property>

           </bean>

           <bean id="service" class="org.springframework.aop.framework.ProxyFactoryBean">

                  <property name="proxyInterfaces">

                         <value>MyService</value>

                  </property>

                  <property name="interceptorNames">

                         <list>

                                <value>servletAdvisor</value>

                         </list>

                  </property>

                  <property name="target">

                         <value ref="myServiceTarget">

                  </property>

           </bean>

    </beans>

    posted on 2005-03-02 17:33 jinfeng_wang 閱讀(2421) 評論(0)  編輯  收藏 所屬分類: spring
    主站蜘蛛池模板: 97国产免费全部免费观看| 免费国产高清视频| 菠萝菠萝蜜在线免费视频| 中文字幕精品亚洲无线码二区| 91在线精品亚洲一区二区| 国产三级在线观看免费| 久久www免费人成精品香蕉| 亚洲精品电影在线| 亚洲国产香蕉人人爽成AV片久久| 毛片亚洲AV无码精品国产午夜| 免费人成视频在线| 国产精品hd免费观看| 亚洲黄色免费网址| 亚洲精品tv久久久久久久久久| 日本一区二区三区免费高清在线 | 国产成人涩涩涩视频在线观看免费| 亚洲夂夂婷婷色拍WW47 | 日韩欧毛片免费视频| 色多多A级毛片免费看| 亚洲天堂福利视频| 最新国产AV无码专区亚洲| 成人免费一区二区三区在线观看| 亚洲色大18成人网站WWW在线播放 亚洲色大成WWW亚洲女子 | 亚洲AV无码专区在线厂| 亚洲成a人在线看天堂无码| 最新中文字幕免费视频| 国产亚洲精品bv在线观看| 国产亚洲精品国产| 又色又污又黄无遮挡的免费视| 一区二区三区免费电影| 亚洲中文字幕无码mv| 国产免费小视频在线观看| 久久99久久成人免费播放| 亚洲精品乱码久久久久久V| 亚洲一区精品中文字幕| 亚洲国产精品一区二区第一页免| 色www永久免费| 免费人成网站永久| 亚洲专区在线视频| 国产一级淫片a免费播放口之| 黄 色一级 成 人网站免费|