锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲第一黄色网址,久久亚洲国产精品123区,亚洲精品无码久久http://m.tkk7.com/wigalos/zh-cnThu, 15 May 2025 08:41:54 GMTThu, 15 May 2025 08:41:54 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       鏈榪戝湪瀛︿範spring錛屽仛浜嗕竴浜涘叧浜嶴pring AOP鐨勬葷粨鍜屼緥瀛愶紝鍙傝冧功綾嶆槸鏉庡垰鑰佸笀钁楃殑銆婅交閲忕駭J2EE浼佷笟搴旂敤瀹炴垬銆嬨傚涓嬶細

                                             Spring AOP浠嬬粛

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

 



wigalos 2007-11-16 14:06 鍙戣〃璇勮
]]>
主站蜘蛛池模板: 亚洲乱妇熟女爽到高潮的片| 一级毛片aa高清免费观看| 天天摸天天碰成人免费视频| 在线观看亚洲精品专区| 国产∨亚洲V天堂无码久久久| 91视频免费网址| 色窝窝亚洲AV网在线观看| 亚洲精品无码av人在线观看| 永久免费AV无码国产网站| 一级毛片在线完整免费观看| 亚洲视频在线视频| 国产精品深夜福利免费观看 | 久久久国产亚洲精品| 免费a在线观看播放| 99精品视频在线视频免费观看| 亚洲精品无码成人| 亚洲影院在线观看| 亚洲福利精品电影在线观看| 美女内射毛片在线看免费人动物| 美女被免费网站视频在线| 亚洲精品视频在线播放| 亚洲一级特黄大片无码毛片| 男女免费观看在线爽爽爽视频| 国产精品免费久久久久久久久| 亚洲熟妇成人精品一区| 亚洲av午夜成人片精品网站| 免费国产怡红院在线观看| 成人在线免费看片| 久久国产精品萌白酱免费| 免费看一级高潮毛片| 亚洲色一区二区三区四区 | 亚洲成AV人片高潮喷水| 久久综合亚洲鲁鲁五月天| 亚洲无码高清在线观看| 精品无码国产污污污免费| 免费观看激色视频网站(性色)| 免费无码又爽又刺激高潮软件| 免费看黄福利app导航看一下黄色录像| 亚洲精品天堂在线观看| 亚洲精品国产福利在线观看| 亚洲精品午夜无码专区|