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

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

SpringAOP之HelloWorld

2019-11-18 13:47:11
字體:
來源:轉載
供稿:網友

  我們使用一個簡單的例子來演示一下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
欧美日韩另类在线| 亚洲精品久久久久久久久| 久久琪琪电影院| 久久国产精品久久久久久| 亚洲第一区第二区| 在线观看中文字幕亚洲| 亚洲美女动态图120秒| 黑人巨大精品欧美一区免费视频| 精品国产91乱高清在线观看| 亚洲第一级黄色片| 国产精品日日摸夜夜添夜夜av| 超碰91人人草人人干| 久久这里只有精品视频首页| 日韩视频免费大全中文字幕| 亚洲精品动漫100p| 日韩免费在线观看视频| 亚洲人成电影在线播放| 在线看福利67194| 亚洲男人第一av网站| 成人午夜一级二级三级| 精品欧美aⅴ在线网站| 欧美日韩一区二区三区在线免费观看| 成人免费观看a| 91视频国产高清| 国产精品美女久久久久av超清| 国产精品91久久久| 国产精品欧美在线| 91精品久久久久久久久久久久久| 欧美壮男野外gaytube| 亚洲一区久久久| 成人黄色影片在线| 欧美成人免费播放| 国产精品青青在线观看爽香蕉| 清纯唯美亚洲综合| 日韩激情视频在线| 久久国产精品久久国产精品| 日韩美女视频中文字幕| 成人黄色在线观看| 亚洲欧美第一页| 国产一区二区三区在线看| 国产精品极品尤物在线观看| 国产精欧美一区二区三区| 92国产精品久久久久首页| 57pao成人国产永久免费| 欧美日韩加勒比精品一区| 国产一区欧美二区三区| 亚洲人成电影网站色xx| 国产精品男人爽免费视频1| 国产精品视频地址| 中文字幕日韩免费视频| 欧美日韩一区免费| 国产精品久久久久av| 欧美性猛交xxxx富婆| 午夜精品一区二区三区av| 亚洲天堂男人的天堂| 久久久97精品| 在线播放亚洲激情| 亚洲欧美激情精品一区二区| 久久色精品视频| 亚洲精品国产福利| 日韩欧美一区二区三区| 日韩高清人体午夜| 欧美在线国产精品| 国产精自产拍久久久久久蜜| 成人中文字幕在线观看| 国产精品美女久久久久久免费| 成人xvideos免费视频| 欧美成人精品激情在线观看| 国产成人精品亚洲精品| 国产精品吊钟奶在线| 日韩中文字幕网址| 日韩精品亚洲元码| 久久久天堂国产精品女人| 欧美性猛交丰臀xxxxx网站| 国产精品扒开腿爽爽爽视频| 91国产视频在线| 日本精品在线视频| 国产精品wwwwww| 亚洲国产天堂网精品网站| 午夜精品久久久久久久男人的天堂| 久久久中精品2020中文| 久久久精品久久久久| 色妞欧美日韩在线| 日韩av中文字幕在线免费观看| 懂色aⅴ精品一区二区三区蜜月| 成人精品一区二区三区电影免费| 91久久国产精品91久久性色| 亚洲精品久久久久国产| 亚洲美女又黄又爽在线观看| 亚洲小视频在线| 欧美激情女人20p| 成人欧美一区二区三区在线| 精品久久久久久| 亚洲欧美日韩网| 日韩有码在线电影| 亚洲欧洲黄色网| 91香蕉国产在线观看| 日本一区二区三区在线播放| 亚洲理论在线a中文字幕| 日本高清不卡在线| 国产精品h片在线播放| 欧美午夜激情视频| 久久精品国产亚洲精品| 日韩国产高清污视频在线观看| 狠狠久久五月精品中文字幕| 亚洲第一页中文字幕| 欧美黑人巨大精品一区二区| 色偷偷av亚洲男人的天堂| 国产精品揄拍500视频| 亚洲一区二区三区香蕉| 亚洲欧美精品suv| 国产精品福利观看| 国产精品爽爽爽爽爽爽在线观看| 久久久久久久爱| 成人免费淫片aa视频免费| 91精品国产综合久久香蕉| 欧美激情视频三区| 亚洲午夜精品久久久久久性色| 国产精品精品久久久久久| 国产精品美女在线观看| 欧美激情免费看| 国产精品久久久亚洲| 欧美裸体xxxxx| 日韩亚洲第一页| 亚洲国产精品yw在线观看| 伦理中文字幕亚洲| 色伦专区97中文字幕| 91欧美精品成人综合在线观看| 亚洲国产日韩精品在线| 欧美午夜美女看片| 91久久久久久久久| 日韩在线观看免费高清| 国产精品麻豆va在线播放| 国产精品欧美亚洲777777| 亚洲欧美日韩国产中文| 亚洲人永久免费| 国内精品伊人久久| 久久久精品国产网站| 日韩在线视频二区| 成人在线视频网| 国模精品系列视频| 亚洲视频在线看| 97久久超碰福利国产精品…| 国产国产精品人在线视| 亚洲人午夜精品| 欧美日韩爱爱视频| 98视频在线噜噜噜国产| 国产亚洲欧美日韩精品| 亚洲视频在线免费观看| 91在线观看免费高清完整版在线观看| 久久最新资源网| 欧美精品免费看| 在线看欧美日韩| 亚洲第一网站男人都懂| 91av成人在线| 国产精品免费观看在线| 欧美综合一区第一页| 欧美激情成人在线视频| 欧美精品18videos性欧美| 92看片淫黄大片欧美看国产片| 欧美巨大黑人极品精男| 久久亚洲国产成人| 在线观看免费高清视频97| 亚洲一区二区日本|