亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Spring AOP之Hello World

2019-11-18 12:59:56
字體:
來源:轉載
供稿:網友

  我們使用一個簡單的例子來演示一下SPRing中的AOP,這是一個log的例子,實際上log是一個對于AOP來說很不好的例子,這里我們只為說明Spring AOP的使用。
  
  1.首先我們來創建一個自己的interceptor
  這個類必須繼續org.aopalliance.intercept. MethodInterceptor接口。Spring的AOP框架就是參照aopalliance這個標準實現的,所以我們的MyInterceptor要繼續這個標準中的接口。
  這個接口只有一個要求實現的方法:
  public Object invoke(MethodInvocation methodInvocation) throws Throwable;
  下面是我們的MyIntercptor:
  
  public class MyInterceptor implements MethodInterceptor {
  private final Log logger = LogFactory.getLog(getClass());
  
  public Object invoke(MethodInvocation methodInvocation) throws Throwable {
  logger.info("Beginning method (1): " +
  methodInvocation.getMethod().getDeclaringClass() + "." +
  methodInvocation.getMethod().getName() + "()");
  long startTime = System.currentTimeMillis();
  try{
  Object result = methodInvocation.proceed();
  return result;
  }finally{
  logger.info("Ending method (1): " +
  methodInvocation.getMethod().getDeclaringClass() + "." +
  methodInvocation.getMethod().getName() + "()");
  logger.info("Method invocation time (1): " +
  (System.currentTimeMillis() - startTime) + " ms.");
  }
  }
  }
  
  對于上面的代碼需要說明的是下面兩行代碼:
  Object result = methodInvocation.proceed();
  return result;
  整個程序的流程是這樣的:
  1,先是執行在Object result = methodInvocation.proceed();前面的代碼;
  2,接著執行Object result = methodInvocation.proceed();,它把執行控制權交給了interceptor stack(攔截器棧)內的下一個interceptor,假如沒有了就交給真正的業務方法;
  3,然后執行return result;之前的代碼;
  4,最后執行return result;,它把控制權交回它之上的interceptor,假如沒有了就退出interceptor stack。
  
  2.寫出我們的業務對象及其接口
  為了方便我們的業務接口只有一個hello方法:
  
  public interface BusinessInterface {
  public void hello();
  }
  
  業務對象的代碼如下:
  
  public class BusinessInterfaceImpl implements BusinessInterface{
  public void hello() {
  System.out.println("hello Spring AOP.");
  }
  }
  
  3.接下來,我們來看看如何使用我們的寫的interceptor
  我們把業務對象作為AOP的target:
  <bean id="businessTarget" class="com.rst.spring.testaop.BusinessInterfaceImpl"/>
  接著在bean定義中聲明interceptor:
  <bean id="myInterceptor" class="com.rst.spring.testaop.MyInterceptor"/>
  最后,我們來聲明真正的業務對象,通過使用它的接口以及Spring的ProxyFactoryBean:
  
  <bean id="businessBean"
    class="org.springframework.aop.framework.ProxyFactoryBean">
  <property name="proxyInterfaces">
  <value>com.rst.spring.testaop.BusinessInterface</value>
  </property>
  <property name="interceptorNames">
  <list>
  <value>myInterceptor</value>
  <value>businessTarget</value>
  </list>
  </property>
  </bean>
  
  這里需要說明兩點:
  proxyInterfaces:就是我們的業務對象的實際接口;
  interceptorNames:定義了所有interceptors的執行順序,其中業務對象的target作為list的最后一個。記著一定要把業務對象的target放到list中,否則你的業務對象就不會工作。
  
  4.最后,寫我們的測試類
  ClassPathResource resource =
  new ClassPathResource("com/rst/spring/testaop/aop_bean.xml");
  XmlBeanFactory beanFactory = new XmlBeanFactory(resource);
  BusinessInterface businessBean =
  (BusinessInterface) beanFactory.getBean("businessBean");
  businessBean.hello();
  
  一切正常就可以在log上看到相應的信息了。
  以下是附件源代碼的執行效果:
  2004-09-08 16:04:51,210 INFO - Beginning method (1): interface com.rst.spring.testaop.BusinessInterface.hello()
  2004-09-08 16:04:51,210 INFO - Beginning method (2): interface com.rst.spring.testaop.BusinessInterface.hello()
  hello Spring AOP.
  2004-09-08 16:04:51,210 INFO - Ending method (2): interface com.rst.spring.testaop.BusinessInterface.hello()
  2004-09-08 16:04:51,210 INFO - Ending method (1): interface com.rst.spring.testaop.BusinessInterface.hello()
  2004-09-08 16:04:51,210 INFO - Method invocation time (1): 0 ms.
  源代碼需要spring.jar, aopallience.jar, commons-logging.jar。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久热精品视频在线观看| 欧洲精品在线视频| 欧美色视频日本版| 亚洲成年人影院在线| 日本免费在线精品| 欧美中文在线观看国产| 欧美日韩免费看| 国产精品久久久久久久久久久久久久| 免费99精品国产自在在线| 国产成人综合精品在线| 亚洲网址你懂得| 久久精品免费电影| 欧美成人免费全部观看天天性色| 美女福利精品视频| 国产精品香蕉国产| 91精品国产91久久久| 亚洲精品电影久久久| 亚洲国产精品成人一区二区| 国产精品成人免费电影| 亚洲激情视频在线| 国产极品精品在线观看| 高潮白浆女日韩av免费看| 久久久久久久久久久91| 国产国语刺激对白av不卡| 亚洲精品wwwww| 国产成人av在线播放| 亚洲欧美日韩一区二区三区在线| 日本成人黄色片| 成人黄色在线免费| 久久久久久久久国产精品| 欧美午夜精品久久久久久浪潮| 亚洲精品一区二区三区不| 亚洲精品日韩久久久| 国产精品福利网站| 久久久精品国产| 国外色69视频在线观看| 国产精品一区二区久久久| 久久精品国产亚洲| 国产精品久久久久久网站| 亚洲国产精品嫩草影院久久| 日韩av成人在线观看| 欧美综合激情网| 国产综合香蕉五月婷在线| 性夜试看影院91社区| 综合激情国产一区| 国产一区二区三区高清在线观看| 亚洲网站视频福利| 精品人伦一区二区三区蜜桃免费| 亚洲精品在线观看www| 色悠久久久久综合先锋影音下载| 国外成人在线直播| 久久久精品国产亚洲| 一夜七次郎国产精品亚洲| 成人网欧美在线视频| 成人精品一区二区三区| 日韩av在线免费看| 在线观看久久av| 一区二区三区久久精品| 亚洲国产天堂网精品网站| 亚洲人成在线观看网站高清| 91精品国产99| 亚洲国产成人久久综合| 国产91亚洲精品| 国产亚洲视频中文字幕视频| 日韩av中文字幕在线免费观看| 久久久久久免费精品| 久久中文字幕一区| 亚洲电影免费观看高清完整版在线| 最好看的2019年中文视频| 欧美一区深夜视频| 日韩久久精品成人| 欧美性xxxx极品hd欧美风情| 国产精品视频免费在线| 欧美一级片一区| 欧美一级视频一区二区| 欧美黄色成人网| 国产视频一区在线| 国产在线98福利播放视频| 深夜福利日韩在线看| 久久久免费高清电视剧观看| 国产午夜精品麻豆| 欧美日韩人人澡狠狠躁视频| 亚洲国产小视频| 北条麻妃在线一区二区| 清纯唯美日韩制服另类| 97热在线精品视频在线观看| 97香蕉久久夜色精品国产| 亚洲天堂男人天堂女人天堂| 国产美女久久精品香蕉69| 国产精品99久久久久久www| 亚洲人成电影网站色| www国产亚洲精品久久网站| 亚洲第一视频在线观看| 狠狠色狠狠色综合日日五| 蜜臀久久99精品久久久无需会员| 欧美高清videos高潮hd| 97人洗澡人人免费公开视频碰碰碰| 亚洲第一区在线| 日韩在线国产精品| 日本高清视频一区| 91伊人影院在线播放| 久久久999精品视频| 国产91在线播放| 亚洲区免费影片| 欧美精品18videos性欧美| 免费成人高清视频| 夜夜狂射影院欧美极品| 久久久久久久久久国产精品| 亚洲色图综合久久| 日韩欧美中文在线| 2019最新中文字幕| 亚洲a∨日韩av高清在线观看| 欧洲成人在线观看| 2018中文字幕一区二区三区| 538国产精品视频一区二区| 97超级碰碰人国产在线观看| 亚洲国内高清视频| 91精品美女在线| 亚洲精品久久久久久下一站| 欧美视频在线观看免费| 国产精品视频自在线| 久久九九有精品国产23| 久久99精品国产99久久6尤物| 色综合久久天天综线观看| 国产精品久久久久久久久久ktv| 久久久久久午夜| 丝袜情趣国产精品| 国产精品美腿一区在线看| 午夜精品视频网站| 欧美性生活大片免费观看网址| 欧美色欧美亚洲高清在线视频| 国产精品视频网站| 尤物九九久久国产精品的特点| 日韩最新中文字幕电影免费看| 日韩av在线免费观看一区| 欧美亚洲在线视频| 精品国产一区二区在线| 一个人看的www久久| 国产精品久久久久999| 欧美国产中文字幕| 久久久久女教师免费一区| 伊人久久男人天堂| 欧美在线日韩在线| 日韩国产高清视频在线| 亚洲精品久久7777777| 欧美日韩国产成人在线观看| 欧美在线一区二区视频| 国产精品久久久久久久久男| 国产精品入口尤物| 欧美孕妇毛茸茸xxxx| 亚洲国产精品yw在线观看| 日韩黄色av网站| 欧美成人精品在线视频| 国产专区欧美专区| 久久999免费视频| 日韩av影视综合网| 精品日韩中文字幕| 久久天天躁狠狠躁老女人| 亚洲色图18p| 日韩在线免费视频| 国产精品日韩在线播放| 日韩美女激情视频| 欧美剧在线观看| 国产日韩一区在线|