posts - 66,  comments - 11,  trackbacks - 0
          當(dāng)我們有很多類需要通知時(shí),顯示的創(chuàng)建每個(gè)代理就會(huì)顯得很笨拙。幸運(yùn)的是,Spring有一個(gè)自動(dòng)代理機(jī)制,它可以讓容器為我們產(chǎn)生代理。Spring有2個(gè)類提供這種服務(wù):BeanNameAutoProxyCreate和DefaultAdvisorAutoProxyCreator.

          BeanNameAutoProxyCreate:為匹配一系列名字的Bean自動(dòng)創(chuàng)建代理。它也允許在名字的2端進(jìn)行通配符的匹配。
          <?xml version="1.0" encoding="UTF-8"?>
          <beans
              
          xmlns="http://www.springframework.org/schema/beans"
              xmlns:xsi
          ="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation
          ="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
              
          <bean id="performanceThresholdInterceptor" class="com.wyq.spring.common.aopinstance.autoproxy.PerformanceThresholdInterceptor">
                  
          <constructor-arg>
                      
          <value>5000</value>
                  
          </constructor-arg>
              
          </bean>
              
          <!-- 
                  如果Bean是一個(gè)Advisor或攔截器,它將應(yīng)用到代理對(duì)象的所有方法上。如果是通知的話,Advisor切入點(diǎn)
                  會(huì)根據(jù)不同Bean將通知應(yīng)用到不同的地方。
               
          -->
              
          <bean id="performanceThresholdProxyCreator" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
                  
          <property name="beanNames">
                      
          <list>
                          
          <value>*Service</value>
                      
          </list>
                  
          </property>
                  
          <property name="interceptorNames">
                      
          <value>performanceThresholdInterceptor</value>
                  
          </property>
              
          </bean>
          </beans>
          更強(qiáng)大的自動(dòng)代理創(chuàng)建器是DefaultAdvisorAutoProxyCreator.當(dāng)ApplicationContext讀入所有Bean的配置信息后,DefaultAdvisorAutoProxyCreator將掃描上下文,尋找所有的Advisor.它將這些Advisor應(yīng)用到所有符合Advisor切入點(diǎn)的Bean中。
          <?xml version="1.0" encoding="UTF-8"?>
          <beans
              
          xmlns="http://www.springframework.org/schema/beans"
              xmlns:xsi
          ="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation
          ="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
              
          <bean id="performanceThresholdInterceptor" class="com.wyq.spring.common.aopinstance.autoproxy.PerformanceThresholdInterceptor">
                  
          <constructor-arg>
                      
          <value>5000</value>
                  
          </constructor-arg>
              
          </bean>
              
          <!-- 
                  一個(gè)Advisor是一個(gè)切入點(diǎn)和一個(gè)通知的結(jié)合體。不用顯示的將Advisor與其他東西結(jié)合,現(xiàn)在只要簡(jiǎn)單的定義他們,然后讓他們自動(dòng)
                  應(yīng)用到他們匹配的地方。這樣松耦合Bean以及他們的通知就實(shí)現(xiàn)了。你只管寫好你的Bean,寫好你的通知,讓容器來充當(dāng)媒婆。
               
          -->
              
          <bean id="advisor" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
                  
          <property name="advice">
                      
          <bean class="com.wyq.spring.common.aopinstance.autoproxy.PerformanceThresholdInterceptor"></bean>
                  
          </property>
                  
          <property name="pattern">
                      
          <value>.+Service\..+</value>
                  
          </property>
              
          </bean>
              
          <bean id="autoProxyCreator" class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator">
              
          </bean>
          </beans>

          posted on 2009-11-06 16:00 王永慶 閱讀(264) 評(píng)論(0)  編輯  收藏 所屬分類: SPRING
          <2009年11月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          關(guān)注blogs

          搜索

          •  

          最新評(píng)論

          • 1.?re: 心中的那個(gè)她[未登錄]
          • 如果心情能那么容易放開就好了,碰到她是我的緣分,但是她的緣分不知道在哪里。
          • --王永慶
          • 2.?re: 心中的那個(gè)她[未登錄]
          • 兄弟,喜歡就大膽去追好了,就是因?yàn)橄矚g才會(huì)有不愉快,如果想一輩子沒有這些煩惱,找一個(gè)可有可無的人就好了。這種事講的是緣分吧。別人對(duì)你好不好其實(shí)不太重要。放開心情就好了。
          • --萍水相逢
          • 3.?re: 心中的那個(gè)她
          • 只能同甘不能共苦,就他媽算了吧,程序員也是人啊!我現(xiàn)在也很討厭女的不理解人情。
          • --咖啡妝
          • 4.?re: 難以割舍的那份情感
          • 評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
          • --王永慶
          • 5.?re: 難以割舍的那份情感
          • 評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
          • --隔葉黃鶯

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 石首市| 焦作市| 德昌县| 保定市| 卢湾区| 大理市| 元氏县| 铜鼓县| 札达县| 乌兰浩特市| 措勤县| 大宁县| 鸡东县| 富阳市| 分宜县| 五河县| 西平县| 当雄县| 邵东县| 彭山县| 洛隆县| 宜章县| 绥滨县| 井陉县| 张掖市| 龙里县| 南昌市| 积石山| 民县| 台州市| 吴旗县| 江都市| 广南县| 金溪县| 洛浦县| 博爱县| 光山县| 都安| 土默特左旗| 大邑县| 娱乐|