<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-10  評論-66  文章-1  trackbacks-0

    ???? ?經過這段日子的學習和使用Spring,慢慢地體會到Spring的優妙之處,正在深入地吸收Spring的精華,呵呵?,F在寫的這個只是個簡單AOP例子,包括前置通知,后置通知,環繞通知,和目標對象。寫這個例子的主要目標只是想讓想學AOP的能更快地入門,了解一下如何去配置AOP里面的東東。
    目標對象的接口:IStudent.java

    ?1 /**
    ?2 ?*?
    ?3 ? */

    ?4 package ?com.dragon.study;
    ?5
    ?6 /**
    ?7 ?*? @author ?dragon
    ?8 ?*
    ?9 ? */

    10 public ? interface ?IStudent? {
    11 ????
    12 ???? public ? void ?addStudent(String?name);
    13 }

    14


    目標類:StudentImpl.java

    ?1 /**
    ?2 ?*?
    ?3 ? */

    ?4 package ?com.dragon.study.Impl;
    ?5
    ?6 import ?com.dragon.study.IStudent;
    ?7
    ?8 /**
    ?9 ?*? @author ?dragon
    10 ?*
    11 ? */

    12 public ? class ?StudentImpl? implements ?IStudent {
    13
    14 ????? public ? void ?addStudent(String?name) {
    15 ?????????System.out.println( " 歡迎? " + name + " ?你加入Spring家庭! " );
    16 ?????}

    17 }

    18



    前置通知:BeforeAdvice.java

    ?1 /**
    ?2 ?*?
    ?3 ? */

    ?4 package ?com.dragon.Advice;
    ?5
    ?6 import ?java.lang.reflect.Method;
    ?7
    ?8 import ?org.springframework.aop.MethodBeforeAdvice;
    ?9
    10 /**
    11 ?*? @author ?dragon
    12 ?*
    13 ? */

    14 public ? class ?BeforeAdvice? implements ?MethodBeforeAdvice {
    15
    16 ?????? public ? void ?before(Method?method,Object[]?args,?Object?target)
    17 ??????????????? throws ?Throwable {
    18 ??????????
    19 ??????????System.out.println( " 這是BeforeAdvice類的before方法. " );
    20 ??????????
    21 ??????}

    22 }

    23

    后置通知:AfterAdvice.java
    ?1/**
    ?2?*?
    ?3?*/

    ?4package?com.dragon.Advice;
    ?5
    ?6import?java.lang.reflect.Method;
    ?7
    ?8import?org.springframework.aop.AfterReturningAdvice;
    ?9
    10/**
    11?*?@author?dragon
    12?*
    13?*/

    14public?class?AfterAdvice?implements?AfterReturningAdvice{
    15????
    16????public?void?afterReturning(Object?returnValue?,Method?method,
    17???????????????????Object[]?args,Object?target)?throws?Throwable{
    18????????System.out.println("這是AfterAdvice類的afterReturning方法.");
    19????}

    20??????
    21
    22}

    23


    環繞通知:CompareInterceptor.java

    ?1/**
    ?2?*?
    ?3?*/

    ?4package?com.dragon.Advice;
    ?5
    ?6import?org.aopalliance.intercept.MethodInterceptor;
    ?7import?org.aopalliance.intercept.MethodInvocation;
    ?8
    ?9
    10/**
    11?*?@author?dragon
    12?*
    13?*/

    14public?class?CompareInterceptor?implements?MethodInterceptor{
    15
    16??????public?Object?invoke(MethodInvocation?invocation)?throws?Throwable{
    17??????????Object?result?=?null;
    18?????????String?stu_name?=?invocation.getArguments()[0].toString();
    19?????????if?(?stu_name.equals("dragon")){
    20?????????????//如果學生是dragon時,執行目標方法,
    21??????????????result=?invocation.proceed();
    22??????????????
    23?????????}
    ?else{
    24?????????????System.out.println("此學生是"+stu_name+"而不是dragon,不批準其加入.");
    25?????????}

    26????????
    27??????????return?result;
    28??????}

    29}

    30

    配置文件applicationContext.xml
    ?1<?xml?version="1.0"?encoding="UTF-8"?>
    ?2<!DOCTYPE?beans?PUBLIC?"-//SPRING//DTD?BEAN//EN"?"http://www.springframework.org/dtd/spring-beans.dtd">
    ?3
    ?4<beans>
    ?5
    ?6<bean?id="beforeAdvice"?class="com.dragon.Advice.BeforeAdvice"></bean>
    ?7<bean?id="afterAdvice"?class="com.dragon.Advice.AfterAdvice"></bean>
    ?8<bean?id="compareInterceptor"?class="com.dragon.Advice.CompareInterceptor"></bean>
    ?9<bean?id="studenttarget"?class="com.dragon.study.Impl.StudentImpl"></bean>
    10
    11<bean?id="student"?class="org.springframework.aop.framework.ProxyFactoryBean">
    12??<property?name="proxyInterfaces">
    13????<value>com.dragon.study.IStudent</value>
    14??</property>
    15??<property?name="interceptorNames">
    16????<list>
    17?????<value>beforeAdvice</value>
    18?????<value>afterAdvice</value>
    19????<value>compareInterceptor</value>??
    20????</list>
    21??</property>
    22??<property?name="target">
    23????<ref?bean="studenttarget"/>
    24??</property>
    25
    26</bean>
    27
    28
    29
    30
    31</beans>


    ? 現在開始寫測試類,Test.java
    ?1/**
    ?2?*?
    ?3?*/

    ?4package?com;
    ?5
    ?6import?org.springframework.context.ApplicationContext;
    ?7import?org.springframework.context.support.FileSystemXmlApplicationContext;
    ?8
    ?9import?com.dragon.study.IStudent;
    10
    11/**
    12?*?@author?dragon
    13?*
    14?*/

    15public?class?Test?{
    16
    17????/**
    18?????*?@param?args
    19?????*/

    20????public?static?void?main(String[]?args)?{
    21????????//?TODO?Auto-generated?method?stub
    22??????ApplicationContext?ctx?=?
    23??????????new?FileSystemXmlApplicationContext("/com/dragon/applicationContext.xml");
    24??????
    25??????IStudent?person?=?(IStudent)ctx.getBean("student");
    26??????person.addStudent("dragon");
    27??????
    28//??????person.addStudent("javadragon");
    29????}

    30
    31}

    32
    posted on 2006-12-03 03:29 javadragon 閱讀(76758) 評論(59)  編輯  收藏

    評論:
    # re: 一個簡單的Spring的AOP例子 2007-02-22 11:41 | freesky_zh
    這個類public class BeforeAdvice implements MethodBeforeAdvice
    好像有點問題,在Eclipse中會報錯。  回復  更多評論
      
    # re: 一個簡單的Spring的AOP例子 2007-02-28 20:34 | javadragon
    我又試了次,沒有錯呀,如果你的還出現錯誤,
    請你把整個工程發給我試下
    郵箱:newlong@126.com  回復  更多評論
      
    # re: 一個簡單的Spring的AOP例子 2007-03-10 10:54 | weichenggao
    不錯,好例子,不過運行該程序,還需要加入commons-logging.jar
    請大家注意!  回復  更多評論
      
    # re: 一個簡單的Spring的AOP例子 2007-03-24 00:31 | 鳥不生蛋蛋的地方
    Nice,u've done a good job, keep practice, keep thinking, then move forward. God's watching u ,ahahaha~  回復  更多評論
      
    # re: 一個簡單的Spring的AOP例子 2007-03-26 20:25 | javadragon
    Thank you! if you don't guided i to how to program,my program capability can't improve. you give me a importnat thing--thinking.thanks again ! i will become stronger. Sorry for my english.haha  回復  更多評論
      
    # re: 一個簡單的Spring的AOP例子 2007-10-11 13:38 | pcz
    AfterAdvice

    不能在方法執行后 在執行啊!  回復  更多評論
      
    # re: 一個簡單的Spring的AOP例子 2007-10-12 22:06 | javadragon
    有什么問題?  回復  更多評論
      
    # re: 一個簡單的Spring的AOP例子 2007-11-12 18:16 | landon
    good job  回復  更多評論
      
    # re: 一個簡單的Spring的AOP例子 2008-04-16 20:42 | 00?
    好不錯,可以運行,,太需要了,謝謝了,,  回復  更多評論
      
    # re: 一個簡單的Spring的AOP例子 2008-04-20 23:01 | huangzongbai
    我按照你的方法去做了,可是Advice不能調用~`,很是郁悶.  回復  更多評論
      
    # re: 一個簡單的Spring的AOP例子 2008-07-14 16:59 | zuoshaobiao
    不錯 不錯 終于弄出來了。謝謝了、  回復  更多評論
      
    # re: 一個簡單的Spring的AOP例子[未登錄] 2008-07-30 20:36 | Rain
    雖然將Aop這個例子寫的不錯!能很好的將要經常使用的代碼變成一個“方面”
    但是注釋要加強!  回復  更多評論
      
    # re: 一個簡單的Spring的AOP例子[未登錄] 2008-07-30 20:52 | Rain
    在Spring Appactiocontext.xml配置文件;你定義的前置,后置;環繞等通知在配置文件中實現了代理(org.springframework.aop.framework.ProxyFactoryBean)
    以此將通知放入到了原Bean中;這樣才能使原Bean中方法調用時自動執行通知
    這是其一》
    <property name="proxyInterfaces">
    <property name="interceptorNames">
    <property name="target">
    這三個屬性是一定要配置的
    第一是被代理的接口(IStudent)
    第二是通知列表(前置,后置;環繞)上面定義的三個類
    第三是被代理的原Bean(StudentImpl )

      回復  更多評論
      
    # re: 一個簡單的Spring的AOP例子[未登錄] 2008-08-01 15:08 |
    好不錯,可以運行,,太需要了,謝謝了,請你把整個工程發給我試下
    郵箱:2008-sina@163.com   回復  更多評論
      
    # re: 一個簡單的Spring的AOP例子 2008-08-27 14:14 | zackey
    @freesky_zh
    因為沒有導入spring.jar  回復  更多評論
      
    # re: 一個簡單的Spring的AOP例子 2008-09-11 10:49 | 啊正
    不錯啊~~~謝謝LZ分享!??!  回復  更多評論
      
    # re: 一個簡單的Spring的AOP例子 2008-09-24 16:13 | wtf110
    我動手做了下,真的好用??!我感覺明白了點aop!謝謝樓主?。?nbsp; 回復  更多評論
      
    # re: 一個簡單的Spring的AOP例子[未登錄] 2009-02-17 23:59 | anna
    good  回復  更多評論
      
    # re: 一個簡單的Spring的AOP例子[未登錄] 2009-02-18 00:12 | wen
    @Rain
    great, 你的注釋是畫龍點睛一筆阿  回復  更多評論
      
    # re: 一個簡單的Spring的AOP例子 2009-09-30 11:51 | 淡定
    No setter found for property 'target' in class 'org.springframework.aop.framework.ProxyFactoryBean'

    在第22行中出現。我加入了aop包啊。為什么找不到
    22 <property name="target">
    23 <ref bean="studenttarget"/>
    24 </property>

      回復  更多評論
      
    # re: 一個簡單的Spring的AOP例子 2009-11-05 16:16 |
    運行以后會報異常啊
    Error creating bean with name 'student' defined in file [E:\workspace\aop2\src\applicationContext.xml]: Cannot resolve reference to bean 'studenttarger' while setting bean property 'targer'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'studenttarger' is defined  回復  更多評論
      
    # re: 一個簡單的Spring的AOP例子[未登錄] 2009-11-07 19:49 | dragon
    @濤
    bean id有沒有寫對?
    targer =>target  回復  更多評論
      
    # re: 一個簡單的Spring的AOP例子 2010-02-02 17:19 | Erwin
    博主你好!
    雖然你的博文已經發表很久了,但是經過一番查找比較,我覺得是最好的!
    同時希望能將運行的測試結果貼出來,這樣文章才算完整而且方便其他人的閱讀。
    另:請問能否引用?  回復  更多評論
      
    # re: 一個簡單的Spring的AOP例子 2010-02-10 11:22 | javadragon
    @Erwin
    可以引用。
    最近幾個項目都沒有用spring,過完年如果有空再整理下,主要還是自己懶,呵呵  回復  更多評論
      
    # re: 一個簡單的Spring的AOP例子 2010-03-10 10:42 | 成亟亟
    您好!dragon。
    我剛剛接觸spring,想跑些小例子熟悉熟悉,由于本人比較愚鈍,網上實在是找不到那種step by step的文章,感覺您的文字簡潔明了,可是實在是不清楚該怎樣把這個例子跑在我的eclipse里,可否把您的工程發給我嘞?謝謝!
    scaramouchben@tom.com  回復  更多評論
      
    # re: 一個簡單的Spring的AOP例子[未登錄] 2010-05-03 15:13 | 123
    頂,  回復  更多評論
      
    # re: 一個簡單的Spring的AOP例子[未登錄] 2010-07-20 11:56 | 微風
    我遇到了和一樓一樣的問題,spring.jar包引入了,可還是不行。為什么???  回復  更多評論
      
    # re: 一個簡單的Spring的AOP例子[未登錄] 2010-07-20 16:02 | 微風
    搞點了,少了個這個aopalliance-1.0.jar包  回復  更多評論
      
    # re: 一個簡單的Spring的AOP例子 2010-07-27 12:50 | wangsan
    3q
      回復  更多評論
      
    # re: 一個簡單的Spring的AOP例子 2010-10-06 20:30 | 查正濱
    代碼沒有任何問題,這個問題我看了好幾天,今天終于解決了,謝謝樓主。  回復  更多評論
      
    # re: 一個簡單的Spring的AOP例子 2011-04-12 15:35 | 啊啊啊
    代碼沒有任何問題,也很簡單明了,謝謝樓主  回復  更多評論
      
    # re: 一個簡單的Spring的AOP例子 2011-04-13 21:37 | 地痞張三
    這個例子很有幫助,謝謝樓主的幸苦勞動  回復  更多評論
      
    # re: 一個簡單的Spring的AOP例子 2011-07-18 14:36 | 產自海南島的驢肉火燒
    小例子很好用,謝謝。  回復  更多評論
      
    # re: 一個簡單的Spring的AOP例子 2011-08-27 09:06 | zhong
    代碼運行,aop的通知代碼沒運行出來呢,也沒報錯  回復  更多評論
      
    # re: 一個簡單的Spring的AOP例子 2011-10-13 16:42 | tesoqop
    可以運行,但是aop的通知代碼沒有運行出來,不知道 為什么。。  回復  更多評論
      
    # re: 一個簡單的Spring的AOP例子 2011-10-13 17:03 | tesoqop
    剛才仔細的又看了一遍,發現是自己搞錯了。
    現在可以啦。afteradvice還沒有運行出來。  回復  更多評論
      
    # re: 一個簡單的Spring的AOP例子 2011-10-17 20:12 | ee
    如果這就算aop 的話 真的是不難  回復  更多評論
      
    # re: 一個簡單的Spring的AOP例子 2011-11-16 16:44 | 塵埃
    不知樓主是否遺忘了這個例子,我看了這個例子后,也運行了,但是我想知道這個程序的運行順序是什么,就是說在哪配置了它的運行順序嗎(我也沒看到啊),為什么就先走before,然后走compareInterceptor,而且這里面怎么去調用impl里的方法的,最后走after?求樓主解答,不勝感激~~  回復  更多評論
      
    # re: 一個簡單的Spring的AOP例子 2011-11-20 19:41 | javadragon
    @塵埃
    執行順序是通過繼承spring的接口before,afterReturning等來實現的,有興趣的話,可以去看下spring aop的源碼  回復  更多評論
      
    # re: 一個簡單的Spring的AOP例子 2012-04-23 15:07 |
    我覺得你這個例子是調用一個方法并打印,如果參數不滿足條件,則不調用方法,和不如直接if,else就可以搞定呢?  回復  更多評論
      
    # re: 一個簡單的Spring的AOP例子 2012-11-16 16:54 | 44
    4444  回復  更多評論
      
    # re: 一個簡單的Spring的AOP例子[未登錄] 2013-03-25 11:12 | haha
    good  回復  更多評論
      
    # re: 一個簡單的Spring的AOP例子[未登錄] 2013-06-03 14:34 | wayne
    最好吧jar包列一下 免得有些人不清楚錯在哪里  回復  更多評論
      
    # re: 一個簡單的Spring的AOP例子 2013-08-27 10:29 | 對方
    @Rain
    <property name="proxyInterfaces"> 這個去掉也可以執行目標方法  回復  更多評論
      
    # re: 一個簡單的Spring的AOP例子 2013-08-28 00:35 | GHF
    GH   回復  更多評論
      
    # re: 一個簡單的Spring的AOP例子 2013-11-11 15:49 | jki
    @freesky_zh應該還差aopalliance.jar這個jar包  回復  更多評論
      
    # re: 一個簡單的Spring的AOP例子 2014-03-27 18:03 | 凨不止
    我是初學者,可以發工程到我郵箱么835060947@qq.com , /thx感謝  回復  更多評論
      
    # re: 一個簡單的Spring的AOP例子 2014-07-06 21:59 | 飛花一夜
    很贊的入門例子,一次成功!
    ps:這里的編輯器沒有復制功能,太討厭了!  回復  更多評論
      
    # re: 一個簡單的Spring的AOP例子 2014-08-13 15:00 | 你爸
    @javadragon
    煞筆  回復  更多評論
      
    # re: 一個簡單的Spring的AOP例子 2014-08-19 10:26 | France.
    其實我是來學習思想 而不是實現,,呵呵 剛剛學 感覺對aop了解了一點,謝謝樓主  回復  更多評論
      
    # re: 一個簡單的Spring的AOP例子 2014-10-30 14:56 | 游客
    不錯,簡單明了,我個人覺得:如果再注明應該導入的包,會更好。  回復  更多評論
      
    # re: 一個簡單的Spring的AOP例子[未登錄] 2014-12-18 16:39 | king
    spring aop 這樣我嘗試也可以攔截到,不過目前我的項目不是ApplicationContext ctx =
    new FileSystemXmlApplicationContext("etc/applicationContext.xml");

    ServerController p= (ServerController)ctx.getBean("serverController");
    p.test();
    這樣調用,是直接在controller類中@Autowired注入service,通過調用controller的方法,就是沒有攔截到,這是什么原因?  回復  更多評論
      
    # re: 一個簡單的Spring的AOP例子[未登錄] 2015-01-23 10:31 | 1
    中國人說什么洋文 草泥馬@javadragon
      回復  更多評論
      
    # re: 一個簡單的Spring的AOP例子[未登錄] 2015-04-02 16:58 | Hill
    @king
    貌似不能用注解,不用注解,用樓主的調用方式就可以了  回復  更多評論
      
    # re: 一個簡單的Spring的AOP例子 2015-06-09 16:52 | 雷鋒
    繼承MethodBeforeAdvice出錯, 我的原因是缺少org.aopalliance-1.0.0.jar的包,我是在網上搜的,放進項目后錯誤消失  回復  更多評論
      
    # re: 一個簡單的Spring的AOP例子[未登錄] 2015-07-29 11:54 |
    你這個applicationContext.xml放在哪里 我運行下找不到xml文件   回復  更多評論
      
    # re: 一個簡單的Spring的AOP例子 2015-11-16 17:08 | 哆啦雷
    @杰
    不要用FileSystemXmlApplicationContext這個包,

    你試試import org.springframework.context.support.ClassPathXmlApplicationContext,

    相應的方法也換成ClassPathXmlApplicationContext("applicationContext.xml")  回復  更多評論
      
    # re: 一個簡單的Spring的AOP例子 2015-11-16 17:14 | 哆啦雷
    這是我lib下的幾個,都是極易引發缺包錯誤的包.
    也許有多余的,不過多多益善咯

    commons-logging-1.0.4.jar
    jstl.jar
    spring-webmvc.jar
    spring.jar
    standard.jar  回復  更多評論
      
    # re: 一個簡單的Spring的AOP例子[未登錄] 2016-04-12 21:07 | 111
    @鳥不生蛋蛋的地方
    wo qu,u english is very good.  回復  更多評論
      

    只有注冊用戶登錄后才能發表評論。


    網站導航:
    博客園   IT新聞   Chat2DB   C++博客   博問  
     
    主站蜘蛛池模板: 亚洲神级电影国语版| 91在线手机精品免费观看| 亚洲影视自拍揄拍愉拍| 久久久久亚洲精品天堂久久久久久| 免费不卡视频一卡二卡| 久久免费公开视频| 污污的视频在线免费观看| 在线观看亚洲AV日韩AV| 亚洲成人福利在线观看| 久久九九亚洲精品| 国产亚洲成人在线播放va| 国产伦一区二区三区免费| 国产免费av片在线看| 亚洲视频在线免费播放| 久艹视频在线免费观看| 最新国产乱人伦偷精品免费网站 | 国产亚洲精品成人久久网站| 亚洲一区二区三区91| 无码乱人伦一区二区亚洲一| 亚洲色婷婷一区二区三区| 亚洲午夜无码AV毛片久久| 免费大黄网站在线观看| 国产精品视频免费一区二区三区| 麻豆一区二区免费播放网站| 最近2019年免费中文字幕高清| 黄色网址在线免费| 光棍天堂免费手机观看在线观看| 一级一看免费完整版毛片| 成年网在线观看免费观看网址| 亚洲精品色在线网站| 国产精品久久久久久亚洲影视| 亚洲私人无码综合久久网| 亚洲中文字幕乱码一区| 亚洲午夜成人精品无码色欲| 亚洲色偷偷色噜噜狠狠99网| 亚洲自国产拍揄拍| 亚洲性无码AV中文字幕| 久久精品国产亚洲av品善| 日韩亚洲人成在线综合| 一区二区三区精品高清视频免费在线播放 | 1a级毛片免费观看|