锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲精品中文字幕无乱码麻豆,亚洲国产精品综合久久20,婷婷亚洲久悠悠色悠在线播放http://www.tkk7.com/zhuyan/category/51859.htmlJAVA鍚彂鑰?/description>zh-cnSun, 03 Jun 2012 01:08:39 GMTSun, 03 Jun 2012 01:08:39 GMT60Spring AOP浠嬬粛http://www.tkk7.com/zhuyan/articles/379801.html鏈卞博鏈卞博Sat, 02 Jun 2012 05:53:00 GMThttp://www.tkk7.com/zhuyan/articles/379801.htmlhttp://www.tkk7.com/zhuyan/comments/379801.htmlhttp://www.tkk7.com/zhuyan/articles/379801.html#Feedback0http://www.tkk7.com/zhuyan/comments/commentRss/379801.htmlhttp://www.tkk7.com/zhuyan/services/trackbacks/379801.html  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錛屼互鍙婃嫤鎴櫒銆?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鏄?Advice鍜屽垏闈㈢殑緇勫悎錛岀敤浜庣‘瀹氱洰鏍囧璞$殑鍝簺鏂規(guī)硶闇瑕佸鍔犲鐞嗭紝浠ュ強鎬庢牱鐨勫鐞嗐傚湪涓婇潰鐨勯厤緗枃浠朵腑錛屼嬌鐢ㄤ簡涓変釜鎷︽埅鍣紝鍏朵腑myAdvice銆?myAroundInterceptor閮芥槸鏅欰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>

鏈卞博 2012-06-02 13:53 鍙戣〃璇勮
]]>
主站蜘蛛池模板: 亚洲av日韩av高潮潮喷无码| 久久亚洲精品成人综合| 精品国产亚洲一区二区三区| 亚洲ts人妖网站| 一区二区在线视频免费观看| 2020因为爱你带字幕免费观看全集 | 18禁美女黄网站色大片免费观看| 日本免费网站在线观看| 亚洲AV成人片色在线观看高潮| 亚洲午夜成人精品无码色欲| 中文字幕在线视频免费| 皇色在线视频免费网站| 自拍偷自拍亚洲精品被多人伦好爽 | 香蕉蕉亚亚洲aav综合| 麻豆亚洲AV成人无码久久精品 | 亚洲熟女少妇一区二区| 亚洲综合色婷婷在线观看| 免费人成激情视频在线观看冫 | 亚洲午夜无码AV毛片久久| 亚洲一区中文字幕| 国产成人无码区免费网站| 国产精品酒店视频免费看| 91嫩草私人成人亚洲影院| 九九免费精品视频在这里| 成年女人看片免费视频播放器| 亚洲精品国产精品乱码视色| 亚洲av第一网站久章草| **aaaaa毛片免费| 中文字幕亚洲无线码a| 亚洲成a∨人片在无码2023 | 亚洲人成www在线播放| 久久精品国产免费| www.亚洲色图| 亚洲欧美日韩中文字幕一区二区三区 | 亚洲aⅴ天堂av天堂无码麻豆| 久久久久久曰本AV免费免费| 亚洲国产精华液网站w| 四虎永久在线精品免费一区二区| 无码日韩精品一区二区免费| 亚洲视频精品在线| 伊人免费在线观看|