锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲av无码潮喷在线观看,亚洲美女色在线欧洲美女,亚洲精品人成网线在线播放vahttp://m.tkk7.com/wigalos/zh-cnThu, 15 May 2025 11:22:33 GMTThu, 15 May 2025 11:22:33 GMT60Spring AOP浠嬬粛http://m.tkk7.com/wigalos/archive/2007/11/16/161006.htmlwigaloswigalosFri, 16 Nov 2007 06:06:00 GMThttp://m.tkk7.com/wigalos/archive/2007/11/16/161006.htmlhttp://m.tkk7.com/wigalos/comments/161006.htmlhttp://m.tkk7.com/wigalos/archive/2007/11/16/161006.html#Feedback14http://m.tkk7.com/wigalos/comments/commentRss/161006.htmlhttp://m.tkk7.com/wigalos/services/trackbacks/161006.html       鏈榪戝湪瀛︿範(fàn)spring錛屽仛浜嗕竴浜涘叧浜嶴pring AOP鐨勬葷粨鍜屼緥瀛愶紝鍙傝冧功綾嶆槸鏉庡垰鑰佸笀钁楃殑銆婅交閲忕駭J2EE浼佷笟搴旂敤瀹炴垬銆嬨傚涓嬶細(xì)

                                             Spring AOP浠嬬粛

       Spring鐨凙OP鏄笂闈唬鐞嗘ā寮忕殑娣卞叆銆備嬌鐢⊿pring AOP錛屽紑鍙戣呮棤闇瀹炵幇涓氬姟閫昏緫瀵硅薄宸ュ巶錛屾棤闇瀹炵幇浠g悊宸ュ巶錛岃繖涓や釜宸ュ巶閮界敱Spring瀹瑰櫒鍏呭綋銆係pring AOP涓嶄粎鍏佽浣跨敤XML鏂囦歡閰嶇疆鐩爣鏂規(guī)硶錛孭roxyHandler涔熷厑璁鎬嬌鐢ㄤ緷璧栨敞鍏ョ鐞嗭紝Spring AOP鎻愪緵浜嗘洿澶氱伒媧葷殑閫夋嫨銆?br /> 鍦ㄤ笅闈pring AOP鐨勭ず渚嬩腑錛孖nvocationHandler閲囩敤鍔ㄦ侀厤緗紝闇瑕佸鍔犵殑鏂規(guī)硶涔熼噰鐢ㄥ姩鎬侀厤緗紝涓涓洰鏍囧璞″彲浠ユ湁澶氫釜鎷︽埅鍣紙綾諱技浜庝唬鐞嗘ā寮忎腑鐨勪唬鐞嗗鐞嗗櫒錛夈?br /> 涓嬮潰鏄師濮嬬殑鐩爣瀵硅薄錛?br /> //鐩爣瀵硅薄鐨勬帴鍙?br /> public interface  Person
{
 //璇ユ帴鍙e0鏄庝簡涓や釜鏂規(guī)硶
 void info();
 void run();
}
涓嬮潰鏄師濮嬬洰鏍囧璞$殑瀹炵幇綾伙紝瀹炵幇綾葷殑浠g爜濡備笅錛?br /> //鐩爣瀵硅薄鐨勫疄鐜扮被錛屽疄鐜扮被瀹炵幇Person鎺ュ彛
public class PersonImpl implements Person
{
 //涓や釜鎴愬憳灞炴?br />  private String name;
 private int age;
 //name灞炴х殑 setter鏂規(guī)硶
 public void setName(String name)
 {
  this.name = name;
 }
 //age灞炴х殑setter鏂規(guī)硶
public void setAge(int age)
 {
  this.age = age;
 }
 //info鏂規(guī)硶錛岃鏂規(guī)硶浠呬粎鍦ㄦ帶鍒跺彴鎵撳嵃涓琛屽瓧絎︿覆
 public void info()
 {
  System.out.println("鎴戠殑鍚嶅瓧鏄?  " + name + " , 浠婂勾騫撮緞涓?  " + age);
 }
 //run鏂規(guī)硶錛岃鏂規(guī)硶涔熷湪鎺у埗鍙版墦鍗頒竴琛屽瓧絎︿覆銆?br />  public void run()
 {
  if (age < 45)
  {
   System.out.println("鎴戣繕騫磋交錛屽璺戣繀閫?..");
  }
  else
  {
   System.out.println("鎴戝勾鑰佷綋寮憋紝鍙兘鎱㈣窇...");
  }
 }
}
璇erson瀹炰緥灝嗙敱Spring瀹瑰櫒璐熻矗浜х敓鍜岀鐞嗭紝name灞炴у拰age灞炴т篃閲囩敤渚濊禆娉ㄥ叆綆$悊銆?br /> 涓轟簡鍏呭垎灞曠ずSpring AOP鐨勫姛鑳斤紝姝ゅ涓篜erson瀵硅薄鍒涘緩涓変釜鎷︽埅鍣ㄣ傜涓涓嫤鎴櫒鏄皟鐢ㄦ柟娉曞墠鐨勬嫤鎴櫒錛屼唬鐮佸涓嬶細(xì)
//璋冪敤鐩爣鏂規(guī)硶鍓嶇殑鎷︽埅鍣紝鎷︽埅鍣ㄥ疄鐜癕ethodBeforeAdvice鎺ュ彛
public class MyBeforeAdvice implements MethodBeforeAdvice
{
 //瀹炵幇MethodBeforeAdvice鎺ュ彛錛屽繀欏誨疄鐜癰efore鏂規(guī)硶錛岃鏂規(guī)硶灝嗗湪鐩爣
 //鏂規(guī)硶璋冪敤涔嬪墠錛岃嚜鍔ㄨ璋冪敤銆?br />      public void before(Method m, Object[] args, Object target) throws Throwable
 {
  System.out.println("鏂規(guī)硶璋冪敤涔嬪墠...");
  System.out.println("涓嬮潰鏄柟娉曡皟鐢ㄧ殑淇℃伅錛?);
  System.out.println("鎵鎵ц鐨勬柟娉曟槸:" + m);
  System.out.println("璋冪敤鏂規(guī)硶鐨勫弬鏁版槸錛? + args);
  System.out.println("鐩爣瀵硅薄鏄細(xì)" + target);
     }
}
絎簩涓嫤鎴櫒鏄柟娉曡皟鐢ㄥ悗鐨勬嫤鎴櫒錛岃鎷︽埅鍣ㄥ皢鍦ㄦ柟娉曡皟鐢ㄧ粨鏉熷悗鑷姩琚皟鐢紝鎷︽埅鍣ㄤ唬鐮佸涓嬶細(xì)
//璋冪敤鐩爣鏂規(guī)硶鍚庣殑鎷︽埅鍣紝璇ユ嫤鎴櫒瀹炵幇AfterReturningAdvice鎺ュ彛
public class MyAfterAdvice implements AfterReturningAdvice
{
 //瀹炵幇AfterReturningAdvice鎺ュ彛蹇呴』瀹炵幇afterReturning鏂規(guī)硶錛岃鏂規(guī)硶灝嗗湪鐩爣鏂規(guī)硶
 //璋冪敤緇撴潫鍚庯紝鑷姩琚皟鐢ㄣ?br />      public void afterReturning(Object returnValue, Method m, Object[] args, Object target)throws Throwable
 {
  System.out.println("鏂規(guī)硶璋冪敤緇撴潫...");
System.out.println("鐩爣鏂規(guī)硶鐨勮繑鍥炲兼槸 : " + returnValue);
  System.out.println("鐩爣鏂規(guī)硶鏄?: " + m);
  System.out.println("鐩爣鏂規(guī)硶鐨勫弬鏁版槸 : " + args);
  System.out.println("鐩爣瀵硅薄鏄?: " + target);
    }
}
絎笁涓嫤鎴櫒鏄槸Around鎷︽埅鍣紝璇ユ嫤鎴櫒鏃㈠彲浠ュ湪鐩爣鏂規(guī)硶涔嬪墠璋冪敤錛屼篃鍙互鍦ㄧ洰鏍囨柟娉曡皟鐢ㄤ箣鍚庤璋冪敤銆備笅闈㈡槸Around鎷︽埅鍣ㄧ殑浠g爜錛?br /> //Around鎷︽埅鍣ㄥ疄鐜癕ethodInterceptor鎺ュ彛
public class MyAroundInterceptor implements MethodInterceptor
{
 //瀹炵幇MethodInterceptor鎺ュ彛蹇呴』瀹炵幇invoke鏂規(guī)硶
     public Object invoke(MethodInvocation invocation) throws Throwable
 {
  //璋冪敤鐩爣鏂規(guī)硶涔嬪墠鎵ц鐨勫姩浣?br />          System.out.println("璋冪敤鏂規(guī)硶涔嬪墠: invocation瀵硅薄錛歔" + invocation + "]");
  //璋冪敤鐩爣鏂規(guī)硶
         Object rval = invocation.proceed();
  //璋冪敤鐩爣鏂規(guī)硶涔嬪悗鎵ц鐨勫姩浣?br />          System.out.println("璋冪敤緇撴潫...");
         return rval;
    }
}
鍒╃敤Spring AOP妗嗘灦錛屽疄鐜頒箣鍓嶇殑浠g悊妯″紡鐩稿綋綆鍗曘傚彧闇瑕佸疄鐜板搴旂殑鎷︽埅鍣ㄥ嵆鍙紝鏃犻渶鍒涘緩鑷繁鐨勪唬鐞嗗伐鍘傦紝鍙渶閲囩敤Spring瀹瑰櫒浣滀負(fù)浠g悊宸ュ巶銆備笅闈㈠湪Spring閰嶇疆鏂囦歡涓厤緗洰鏍嘼ean錛屼互鍙?qiáng)鎷︽埅鍣ㄣ?br /> 涓嬮潰鏄疭pring閰嶇疆鏂囦歡鐨勪唬鐮侊細(xì)
<?xml version="1.0" encoding="gb2312"?>
<!--  Spring閰嶇疆鏂囦歡鐨勬枃浠跺ご-->
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
 "http://www.springframework.org/dtd/spring-beans.dtd">
<!--  Spring閰嶇疆鏂囦歡鐨勬牴鍏冪礌-->
<beans>
 <!--  閰嶇疆鐩爣瀵硅薄-->
 <bean id="personTarget" class="lee.PersonImpl">
  <!--  涓虹洰鏍囧璞℃敞鍏ame灞炴у?->
  <property name="name">
   <value>Wawa</value>
  </property>
  <!--  涓虹洰鏍囧璞℃敞鍏ge灞炴у?->
  <property name="age">
   <value>51</value>
  </property>
 </bean>
 <!--  絎竴涓嫤鎴櫒-->
 <bean id="myAdvice" class="lee.MyBeforeAdvice"/>
 <!--  絎簩涓嫤鎴櫒-->
 <bean id="myAroundInterceptor" class="lee.MyAroundInterceptor"/>
<!--  灝嗘嫤鎴櫒鍖呰鎴怉dvisor錛岃瀵硅薄榪樼‘瀹氫唬鐞嗗鎬庢牱鐨勬柟娉曞鍔犲鐞?->
 <bean id="runAdvisor" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
  <!--  advice灞炴х‘瀹氬鐞哹ean-->
  <property name="advice">
   <!-- 姝ゅ鐨勫鐞哹ean瀹氫箟閲囩敤宓屽bean,涔熷彲寮曠敤瀹瑰櫒鐨勫彟涓涓猙ean-->
   <bean class="lee.MyAfterAdvice"/>
  </property>
  <!--  patterns紜畾姝e垯琛ㄨ揪寮忔ā寮?->
  <property name="patterns">
   <list>
    <!--  紜畾姝e垯琛ㄨ揪寮忓垪琛?->
    <value>.*run.*</value>
   </list>
  </property>
 </bean>
 <!--  浣跨敤ProxyFactoryBean 浜х敓浠g悊瀵硅薄-->
 <bean id="person" class="org.springframework.aop.framework.ProxyFactoryBean">
  <!--  浠g悊瀵硅薄鎵瀹炵幇鐨勬帴鍙?->
  <property name="proxyInterfaces">
   <value>lee.Person</value>
  </property>
  <!--  璁劇疆鐩爣瀵硅薄-->
  <property name="target">
   <ref local="personTarget"/>  
  </property>
  <!--  浠g悊瀵硅薄鎵浣跨敤鐨勬嫤鎴櫒-->
  <property name="interceptorNames">
   <list>
    <value>runAdvisor</value>
    <value>myAdvice</value>
    <value>myAroundInterceptor</value>
   </list>
  </property>
 </bean>
</beans>
璇ラ厤緗枃浠朵嬌鐢≒roxyFactoryBean鏉ョ敓鎴愪唬鐞嗗璞★紝閰嶇疆ProxyFactoryBean宸ュ巶bean鏃訛紝鎸囧畾浜唗arget灞炴э紝璇ュ睘鎬у煎氨鏄洰鏍囧璞★紝璇ュ睘鎬у間負(fù)personTarget錛屾寚瀹氫唬鐞嗙殑鐩爣瀵硅薄涓簆ersonTarget銆傞氳繃interceptorNames灞炴х‘瀹氫唬鐞嗛渶瑕佺殑鎷︽埅鍣紝鎷︽埅鍣ㄥ彲浠ユ槸鏅氱殑Advice錛屾櫘閫欰dvice灝嗗鐩爣瀵硅薄鐨勬墍鏈夋柟娉曡搗浣滅敤錛屾嫤鎴櫒涔熷彲浠ユ槸Advisor錛孉dvisor鏄疉dvice鍜屽垏闈㈢殑緇勫悎錛岀敤浜庣‘瀹氱洰鏍囧璞$殑鍝簺鏂規(guī)硶闇瑕佸鍔犲鐞嗭紝浠ュ強(qiáng)鎬庢牱鐨勫鐞嗐傚湪涓婇潰鐨勯厤緗枃浠朵腑錛屼嬌鐢ㄤ簡涓変釜鎷︽埅鍣紝鍏朵腑myAdvice銆乵yAroundInterceptor閮芥槸鏅欰dvice錛屽畠浠皢瀵圭洰鏍囧璞$殑鎵鏈夋柟娉曡搗浣滅敤銆傝宺unAdvisor鍒欎嬌鐢ㄤ簡姝e垯琛ㄨ揪寮忓垏闈紝鍖歸厤run鏂規(guī)硶錛屽嵆璇ユ嫤鎴櫒鍙鐩爣瀵硅薄鐨剅un鏂規(guī)硶璧蜂綔鐢ㄣ?br />
涓嬮潰鏄祴璇曚唬鐞嗙殑涓葷▼搴忥細(xì)
public class BeanTest
{
    public static void main(String[] args)throws Exception
{
  //鍒涘緩Spring瀹瑰櫒
ApplicationContext ctx = new FileSystemXmlApplicationContext("bean.xml");
  //鑾峰彇浠g悊瀵硅薄
  Person p = (Person)ctx.getBean("person");
  //鎵цinfo鏂規(guī)硶
  p.info();
         System.out.println("===========================================");
  //鎵цrun鏂規(guī)硶
  p.run();
    }
}
涓嬮潰鏄▼搴忕殑鎵ц緇撴灉錛?br /> 鏂規(guī)硶璋冪敤涔嬪墠...
涓嬮潰鏄柟娉曡皟鐢ㄧ殑淇℃伅錛?br /> 鎵鎵ц鐨勬柟娉曟槸:public abstract void lee.Person.info()
璋冪敤鏂規(guī)硶鐨勫弬鏁版槸錛歯ull
鐩爣瀵硅薄鏄細(xì)lee.PersonImpl@b23210
璋冪敤鏂規(guī)硶涔嬪墠: invocation瀵硅薄錛歔invocation: method 'info', arguments
[]; target is of class [lee.PersonImpl]]
鎴戠殑鍚嶅瓧鏄?  Wawa , 浠婂勾騫撮緞涓?  51
璋冪敤緇撴潫...
===========================================
鏂規(guī)硶璋冪敤涔嬪墠...
涓嬮潰鏄柟娉曡皟鐢ㄧ殑淇℃伅錛?br /> 鎵鎵ц鐨勬柟娉曟槸:public abstract void lee.Person.run()
璋冪敤鏂規(guī)硶鐨勫弬鏁版槸錛歯ull
鐩爣瀵硅薄鏄細(xì)lee.PersonImpl@b23210
璋冪敤鏂規(guī)硶涔嬪墠: invocation瀵硅薄錛歔invocation: method 'run', arguments [
]; target is of class [lee.PersonImpl]]
鎴戝勾鑰佷綋寮憋紝鍙兘鎱㈣窇...
璋冪敤緇撴潫...
鏂規(guī)硶璋冪敤緇撴潫...
鐩爣鏂規(guī)硶鐨勮繑鍥炲兼槸 : null
鐩爣鏂規(guī)硶鏄?: public abstract void lee.Person.run()
鐩爣鏂規(guī)硶鐨勫弬鏁版槸 : null
鐩爣瀵硅薄鏄?: lee.PersonImpl@b23210
紼嬪簭鐨勬墽琛岀粨鏋滀腑涓琛?#8220;=”鐢ㄤ簬鍖哄垎涓ゆ璋冪敤鐨勬柟娉曘傚湪璋冪敤info鏂規(guī)硶鏃訛紝鍙湁myAdvice鍜宮yAroundInterceptor涓や釜鎷︽埅鍣ㄨ搗浣滅敤錛岃皟鐢╮un鏂規(guī)硶鏃跺欙紝涓変釜鎷︽埅鍣ㄩ兘璧蜂綔鐢ㄤ簡銆?br />
       閫氳繃涓婇潰鐨勪粙緇嶏紝鍙湅鍑篠pring鐨凙OP妗嗘灦鏄浠g悊妯″紡綆鍖栵紝騫舵嫇灞曚簡浠g悊妯″紡鐨勪嬌鐢ㄣ?br /> Spring AOP鏄疭pring澹版槑寮忎簨鍔$殑鍩虹銆備簡瑙pring AOP瀵規(guī)繁鍏ョ悊瑙pring鐨勫0鏄庡紡浜嬪姟綆$悊鏄潪甯告湁濂藉鐨勩係pring AOP榪樺彲浠ュ畬鎴愬緢澶氬姛鑳斤紝渚嬪鍩轟簬AOP鐨勬潈闄愭鏌ャ?/p>

 



wigalos 2007-11-16 14:06 鍙戣〃璇勮
]]>
主站蜘蛛池模板: 亚洲AV一二三区成人影片| 亚洲另类激情综合偷自拍图| 亚洲理论片在线观看| 东方aⅴ免费观看久久av | 亚洲欧洲中文日产| 精品国产麻豆免费人成网站| 亚洲人成电影在线播放| 精品免费久久久久国产一区 | 午夜dj免费在线观看| 亚洲精品中文字幕麻豆| 最近中文字幕免费完整| 亚洲精品中文字幕乱码影院| 亚洲高清中文字幕免费| jiz zz在亚洲| 天天干在线免费视频| 亚洲aⅴ无码专区在线观看| 国产乱弄免费视频| 一个人免费观看视频在线中文| 亚洲?V无码乱码国产精品 | 黑人精品videos亚洲人| 少妇无码一区二区三区免费| 亚洲人成网址在线观看| 3344免费播放观看视频| 在线亚洲午夜片AV大片| 在线观看免费国产视频| 免费人成视频在线观看免费| 亚洲日本一区二区三区在线| 99re在线视频免费观看| 亚洲色大情网站www| 国产成人亚洲综合无码| 久别的草原电视剧免费观看| 亚洲AV一二三区成人影片| 亚洲成a人片在线观看久| 国产综合免费精品久久久| 亚洲精品视频观看| 日韩激情无码免费毛片| 中文字幕版免费电影网站| 亚洲成人免费网站| 亚洲第一永久AV网站久久精品男人的天堂AV| 大片免费观看92在线视频线视频| 亚洲AV无码一区东京热久久|