胖熊熊

          得到多少又失去了什么

          spring 學(xué)習(xí)(1.3) 入門基礎(chǔ)- AOP 實(shí)例

           aop 例子學(xué)習(xí),轉(zhuǎn)自javaeye

          首先建一個(gè)普通Java項(xiàng)目:com.longthsoft.learn.spring

          spring.jar, commons-logging.jar, cglib-nodep-...jar, aspectjweaver.jar, aspectjrt.jar 放到 Build Path 下.

          以止 lib 除了 spring 外, 其他的都可以在 spring 下載包的 lib 中找到

          下面編碼開始:

          讓我們先寫兩個(gè)簡單的類:

          代碼

          1 package om.longthsoft.learn.spring.models;   
          2       
          3 public class A {   
          4     public void sayHello() {   
          5             System.out.println("Hello, I'm a");   
          6         }   
          7     }  
          8 

          1 package com.longthsoft.learn.spring.models;   
          2 public class B {   
          3         public void sayHi() {   
          4             System.out.println("Hi, I'm b");   
          5         }   
          6     }   
          7 


          沒什么實(shí)際的東西, 只是小A和小B在打招呼

          接下來把他們交給Spring吧(有點(diǎn)殘忍)。

          代碼

           1 <?xml version="1.0" encoding="UTF-8"?>  
           2 <beans xmlns="http://www.springframework.org/schema/beans"  
           3  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
           4         xmlns:aop="http://www.springframework.org/schema/aop"  
           5         xsi:schemaLocation="   
           6             http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd   
           7             http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">  
           8            
           9 <bean id="a" class="com.longthsoft.learn.spring.models.A" />  
          10 <bean id="b" class="com.longthsoft.learn.spring.models.B" />  
          11 </beans>  
          12 

          接下來寫個(gè)Boot

          代碼

           1     package com.longthsoft.learn.spring;   
           2       
           3     import org.springframework.context.ApplicationContext;   
           4     import org.springframework.context.support.ClassPathXmlApplicationContext;   
           5       
           6     import com.longthsoft.learn.spring.models.A;   
           7     import com.longthsoft.learn.spring.models.B;   
           8       
           9     public final class Boot {   
          10       
          11         public static void main(String[] args) {   
          12             ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");   
          13             A a = (A) ctx.getBean("a");   
          14             a.sayHello();   
          15                
          16             B b = (B) ctx.getBean("b");   
          17             b.sayHi();   
          18         }   
          19       
          20     }  
          21 

          嘿, 這里的運(yùn)行結(jié)果不帖了, 大家腦子里閃過即可。

          圣誕到了, 小A小B 介紹完自己之后,也應(yīng)該說句 "Merry Christmas"

          Spring 說, 既然你們交給我, 這等 routine 就不用再麻煩了, 直接一并處理掉。

          于是:

          代碼

           1     package com.longthsoft.learn.spring;   
           2       
           3     import org.aspectj.lang.annotation.AfterReturning;   
           4     import org.aspectj.lang.annotation.Aspect;   
           5     import org.aspectj.lang.annotation.Pointcut;   
           6       
           7     @Aspect  
           8     public class SimpleAspect {   
           9       
          10         @Pointcut("execution(* com.longthsoft.learn.spring.models.*.say*())")   
          11         public void simplePointcut() { }   
          12            
          13         @AfterReturning(pointcut="simplePointcut()")   
          14         public void simpleAdvice() {   
          15             System.out.println("Merry Christmas");   
          16         }   
          17     }   
          18 

          然后修改一下配置文件

          代碼

           1     <?xml version="1.0" encoding="UTF-8"?>  
           2     <beans xmlns="http://www.springframework.org/schema/beans"  
           3         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
           4         xmlns:aop="http://www.springframework.org/schema/aop"  
           5         xsi:schemaLocation="   
           6             http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd   
           7             http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">  
           8            
           9         <aop:aspectj-autoproxy />  
          10            
          11         <bean id="a" class="com.longthsoft.learn.spring.models.A" />  
          12         <bean id="b" class="com.longthsoft.learn.spring.models.B" />  
          13            
          14         <bean id="simpleAspect" class="com.longthsoft.learn.spring.SimpleAspect" />  
          15     </beans>  
          16 

          OK, 運(yùn)行一下:

          Hello, I'm a
          Merry Christmas
          Hi, I'm b
          Merry Christmas

          posted on 2007-05-17 10:42 fatbear 閱讀(2326) 評(píng)論(1)  編輯  收藏 所屬分類: spring

          評(píng)論

          # re: spring 學(xué)習(xí)(1.3) 入門基礎(chǔ)- AOP 實(shí)例 2008-06-13 01:11 anna

          沒有提供applicationContext.xml的代碼  回復(fù)  更多評(píng)論   

          主站蜘蛛池模板: 来安县| 武安市| 临沂市| 南通市| 永定县| 武平县| 如东县| 西畴县| 芜湖市| 基隆市| 双流县| 黑龙江省| 阿合奇县| 洪江市| 布拖县| 河津市| 上虞市| 民权县| 潍坊市| 成都市| 关岭| 昌宁县| 聂拉木县| 青海省| 永泰县| 东阿县| 吕梁市| 博湖县| 太康县| 肇源县| 凤城市| 凤翔县| 南京市| 三河市| 阳新县| 怀柔区| 项城市| 喀喇| 搜索| 资阳市| 榆中县|