转载自:http://jushi1988.iteye.com/blog/689555

以前做的Spring AOP的小例子,今天拿来看了一下,可以作为初学者学习的一个简单demo。

做的很简单,大致是用到了AOP的注解方式。个人感觉Spring AOP真的很不错。可以做日志处理等。

先贴代码:

 

1. 接口 IUser.java

Java代码   Spring AOP 简单demo_spring
  1. package com.jushi.aop;  
  2.   
  3. public interface IUser {  
  4.   
  5.     public String findUser(String username);  
  6.     public void addUser(String username);  
  7.     public void findAll();  
  8. }  
 

2. 接口实现 IUserImpl.java

Java代码   Spring AOP 简单demo_spring
  1. package com.jushi.aop;  
  2.   
  3. import java.util.HashMap;  
  4. import java.util.Map;  
  5.   
  6. public class IUserImpl implements IUser {  
  7.   
  8.     public static Map map = null;  
  9.     public static void init(){  
  10.         String[] list = {"Lucy""Tom""小明""Smith""Hello"};  
  11.         Map tmp = new HashMap();  
  12.         for(int i=0; i<list.length; i++){  
  13.             tmp.put(list[i], list[i]+"00");  
  14.         }  
  15.         map = tmp;  
  16.     }  
  17.     public void addUser(String username) {  
  18.         init();  
  19.         map.put(username, username+"11");  
  20.         System.out.println("--------------【addUser】: "+username+" --------------");  
  21.         System.out.println("【The new List:"+map+"】");  
  22.     }  
  23.   
  24.     public void findAll() {  
  25.         init();  
  26.         System.out.println("---------------【findAll】: "+map+" ------------------");  
  27.     }  
  28.   
  29.     public String findUser(String username) {  
  30.         init();  
  31.         String password = "没查到该用户";  
  32.         if(map.containsKey(username)){  
  33.             password = map.get(username).toString();  
  34.         }  
  35.         System.out.println("-----------------【findUser】-----------------");  
  36.         System.out.println("-----------------Username:"+username+"-----------------");  
  37.         System.out.println("-----------------【Result】:"+password+"------------------");  
  38.         return password;  
  39.           
  40.     }  
  41.   
  42. }  

 3. 拦截类 CheckUser.java

Java代码   Spring AOP 简单demo_spring
  1. package com.jushi.aop;  
  2.   
  3. import java.util.Date;  
  4.   
  5. import org.aspectj.lang.annotation.After;  
  6. import org.aspectj.lang.annotation.Aspect;  
  7. import org.aspectj.lang.annotation.Before;  
  8. import org.aspectj.lang.annotation.Pointcut;  
  9.   
  10. @Aspect  
  11. public class CheckUser {  
  12.   
  13.     @Pointcut("execution(* com.jushi.aop.*.find*(..))")  
  14.     public void checkUser(){  
  15.         System.out.println("**************The System is Searching Information For You****************");  
  16.     }  
  17.       
  18.     @Pointcut("execution(* com.jushi.aop.*.add*(..))")  
  19.     public void checkAdd(){  
  20.         System.out.println("**************<< Add User >> Checking.....***************");  
  21.     }  
  22.       
  23.     @Before("checkUser()")  
  24.     public void beforeCheck(){  
  25.         System.out.println(">>>>>>>> 准备搜查用户..........");  
  26.     }  
  27.       
  28.     @After("checkUser()")  
  29.     public void afterCheck(){  
  30.         System.out.println(">>>>>>>> 搜查用户完毕..........");  
  31.     }  
  32.   
  33.     @Before("checkAdd()")  
  34.     public void beforeAdd(){  
  35.         System.out.println(">>>>>>>> 增加用户--检查ing..........");  
  36.     }  
  37.       
  38.     @After("checkAdd()")  
  39.     public void afterAdd(){  
  40.         System.out.println(">>>>>>>> 增加用户--检查完毕!未发现异常!..........");  
  41.     }  
  42. }  

 4. 实体pojo User.java

Java代码   Spring AOP 简单demo_spring
  1. package com.jushi.entity;  
  2.   
  3. public class User {  
  4.   
  5.     private String username;  
  6.     private String password;  
  7.     public String getUsername() {  
  8.         return username;  
  9.     }  
  10.     public void setUsername(String username) {  
  11.         this.username = username;  
  12.     }  
  13.     public String getPassword() {  
  14.         return password;  
  15.     }  
  16.     public void setPassword(String password) {  
  17.         this.password = password;  
  18.     }  
  19. }  

 5. applicationContext.xml

Java代码   Spring AOP 简单demo_spring
  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.        xmlns:tx="http://www.springframework.org/schema/tx"  
  6.        xsi:schemaLocation="http://www.springframework.org/schema/beans   
  7.                            http://www.springframework.org/schema/beans/spring-beans-2.5.xsd  
  8.                            http://www.springframework.org/schema/aop   
  9.                            http://www.springframework.org/schema/aop/spring-aop-2.5.xsd  
  10.                            http://www.springframework.org/schema/tx   
  11.                            http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">  
  12.       
  13.     <aop:aspectj-autoproxy/>  
  14.     <bean id="user" class="com.jushi.aop.IUserImpl"/>  
  15.     <bean id="check" class="com.jushi.aop.CheckUser"/>  
  16.       
  17.     <!--  <aop:config>  
  18.         <aop:pointcut id="find" expression="execution(* com.jushi.aop.*.find*(..))" />  
  19.         <aop:pointcut id="add"   expression="execution(* com.jushi.aop.*.add*(..))" />  
  20.           
  21.         <aop:aspect id="checkUser" ref="check">  
  22.             <aop:before method="beforeCheck" pointcut-ref="find"/>  
  23.             <aop:after method="afterCheck" pointcut-ref="find"/>  
  24.         </aop:aspect>  
  25.           
  26.         <aop:aspect id="checkAdd" ref="check">  
  27.             <aop:before method="beforeAdd" pointcut-ref="add"/>  
  28.             <aop:after method="afterAdd" pointcut-ref="add"/>  
  29.         </aop:aspect>  
  30.       
  31.     </aop:config>-->  
  32. </beans>  

 

 

好了,一个简单AOP demo就配置好了,测试一下

结果如下:

 

Java代码   Spring AOP 简单demo_spring
  1. >>>>>>>> 增加用户--检查ing..........  
  2. --------------【addUser】: haha --------------  
  3. 【The new List:{Lucy=Lucy00, Tom=Tom00, haha=haha11, Smith=Smith00, Hello=Hello00,   
  4. 小明=小明00}】  
  5. >>>>>>>> 增加用户--检查完毕!未发现异常!..........  

 

例子很小,仅供参考...