spring AOP小例子

下面編碼開始:

讓我們先寫兩個簡單的類:

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


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



沒什麼實際的東西, 只是小A和小B在打招呼



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



Java代碼  收藏代碼
  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>  


接下來寫個Boot



Java代碼  收藏代碼
  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. }  


嘿, 這裏的運行結果不帖了, 大家腦子裏閃過即可。



聖誕到了, 小A小B 介紹完自己之後,也應該說句 "Merry Christmas"



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



於是:



Java代碼  收藏代碼
  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. }  



然後修改一下配置文件



Java代碼  收藏代碼
  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>  


OK, 運行一下:



Hello, I'm a


Merry Christmas


Hi, I'm b


Merry Christmas

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章