`

XML实现AOP(转)

阅读更多

代码一:接口和实现类 

Java代码 
  1. package  cn.itcast.server;  
  2. public   interface  IPersonService {  
  3.     public   void  save(String name);  
  4.     public  String getPersonName(Integer id);  
  5.     public   void  update(String name,Integer id);  
  6. }  

Java代码 
  1. package  cn.itcast.server.impl;  
  2. import  cn.itcast.server.IPersonService;  
  3. public   class  PersonServiceBean2  implements  IPersonService {  
  4.     public  String getPersonName(Integer id) {  
  5.         System.out.println("这是getPersonName方法" );  
  6.         return   "xxx" ;  
  7.     }  
  8.     public   void  save(String name) {  
  9. //      throw new RuntimeException("我是例外");   
  10.         System.out.println("这是save方法" );  
  11.     }  
  12.     public   void  update(String name, Integer id) {  
  13.         System.out.println("这是update方法" );  
  14.     }  
  15. }  


代码二:拦截器的定义 
Java代码 
  1. package  cn.itcast.server;  
  2. import  org.aspectj.lang.ProceedingJoinPoint;  
  3.   
  4. public   class  MyInteceptor2 {  
  5.     public   void  doAccessCheck(){  
  6.         System.out.println("这里输出的是前置通知   " );  
  7.     }  
  8.     public   void  doAfterReturning(){  
  9.         System.out.println("这里输出的是后置通知    "  );  
  10.     }  
  11.     public   void  doAfterReturn(){  
  12.         System.out.println("这里输出的是最终通知" );  
  13.     }  
  14.     public   void  doAfterThrowing(){  
  15.         System.out.println("这里输出的是例外通知   " );  
  16.     }  
  17.     public  Object doBasicProfiling(ProceedingJoinPoint pjp)  throws  Throwable{  
  18.         //判断用户是否具有权限   
  19.             System.out.println("进入方法" );  
  20.             Object result = pjp.proceed();  
  21.             System.out.println("退出方法" );  
  22.             return  result;  
  23.     }  
  24. }  


代码三:配置文件 
Xml代码 
  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:context = "http://www.springframework.org/schema/context"   
  5.        xmlns:aop = "http://www.springframework.org/schema/aop"   
  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/context  
  9.            http://www.springframework.org/schema/context/spring-context-2.5.xsd  
  10.            http://www.springframework.org/schema/aop  
  11.            http://www.springframework.org/schema/aop/spring-aop-2.5.xsd  
  12.            ">   
  13.         < aop:aspectj-autoproxy />   
  14.         <!--AOP开发(基于xml配置进行AOP开发,基于注解方式进行AOP开发)  -->   
  15.         < bean   id = "myInteceptor2"   class = "cn.itcast.server.MyInteceptor2" > </ bean >   
  16.         < bean   id = "personService2"   class = "cn.itcast.server.impl.PersonServiceBean2" > </ bean >   
  17.         < aop:config >   
  18.             < aop:aspect   id = "asp"   ref = "myInteceptor2" >   
  19.                 <!-- expression说明要处理的切入点(方法),下面那个意思是过滤任意返回类型的,cn.itcast.server.impl.PersonServiceBean2类中的任意参数的切入点 -->   
  20.         <!--     <aop:pointcut id="mycut" expression="execution(* cn.itcast.server.impl.PersonServiceBean2.*(..) )"/>  -->     
  21.             < aop:pointcut   id = "mycut"   expression = "execution(* cn.itcast.server.impl.PersonServiceBean2.*(java.lang.String,..) )" />    
  22.         <!--     <aop:pointcut id="mycut" expression="execution(!void cn.itcast.server.impl.PersonServiceBean2.*(..) )"/> -->   
  23.                 < aop:before   pointcut-ref = "mycut"   method = "doAccessCheck" />   
  24.                 < aop:after-returning   pointcut-ref = "mycut"   method = "doAfterReturning" />   
  25.                 < aop:after-throwing   pointcut-ref = "mycut"   method = "doAfterThrowing" />   
  26.                 < aop:after   pointcut-ref = "mycut"   method = "doAfterReturn" />   
  27.                 < aop:around   pointcut-ref = "mycut"   method = "doBasicProfiling" />   
  28.             </ aop:aspect >   
  29.         </ aop:config >   
  30. </ beans >   



测试类: 
Java代码 
  1. package  junit.test;  
  2. import  org.junit.BeforeClass;  
  3. import  org.junit.Test;  
  4. import  org.springframework.context.ApplicationContext;  
  5. import  org.springframework.context.support.ClassPathXmlApplicationContext;  
  6. import  cn.itcast.server.IPersonService;  
  7. public   class  SpringAOPTest {  
  8.     @BeforeClass   
  9.     public   static   void  setUpBeforeClass()  throws  Exception {  
  10.     }  
  11.     @Test   public   void  interceptorTest(){  
  12.         ApplicationContext ac = new  ClassPathXmlApplicationContext( "beans.xml" );  
  13.         IPersonService ipersonService = (IPersonService) ac.getBean("personService2" );  
  14.         ipersonService.update("xxx" , 2 );  
  15.         ipersonService.save("xx" );  
  16.         ipersonService.getPersonName(2 );  
  17.     }  

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics