`

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.     }  

分享到:
评论

相关推荐

    Spring通过XML实现AOP

    **Spring AOP 通过 XML 配置实现** 在软件开发中,面向切面编程(Aspect-Oriented Programming,简称 AOP)是一种强大的设计模式,它允许我们把关注点分离到所谓的“切面”中,这些切面独立于业务逻辑,但又与业务...

    Xml文件配置实现AOP通知

    **XML配置实现AOP通知** 在Spring中,我们可以使用XML配置来声明和定义AOP通知。首先,我们需要在Spring配置文件中启用AOP代理,通过`&lt;aop:config&gt;`标签开启: ```xml &lt;aop:config&gt; &lt;!-- 配置将要织入的通知 --&gt; ...

    Xml配置实现AOP

    基于代理实现AOP切面编程 基于代理的AOP实现主要涉及到两种代理方式:JDK动态代理和CGLIB代理。Spring会根据目标对象是否实现了接口来选择合适的代理方式。 - **JDK动态代理**:如果目标对象实现了至少一个接口,...

    spring aop注解方式、xml方式示例

    Spring AOP提供了注解和XML两种方式来实现切面编程。注解方式更加简洁,易于理解和维护,适用于大多数情况。而XML配置方式则在复杂场景下更具灵活性,如需要动态调整切面配置时。在实际项目中,可以根据需求选择适合...

    Spring 基于基于XML配置方式实现AOP

    本篇文章将重点讲解如何通过XML配置方式在Spring中实现AOP。 首先,了解AOP的基本概念是必要的。AOP的核心是切面(Aspect),它封装了多个相关操作,形成了一个关注点。切点(Pointcut)定义了这些操作应用到何处,...

    spring xml 实现aop切面编程

    总结一下,Spring通过XML配置实现AOP切面编程,主要包括以下几个步骤: 1. 定义切面类,包含切面逻辑方法。 2. 在XML配置文件中声明切面类bean。 3. 使用`aop:config`定义切面的配置,包括切入点表达式和通知类型。 ...

    AOP的相关概念,基于XML的AOP的配置,基于注解的AOP配置

    无论是基于XML的AOP配置还是基于注解的AOP配置,其核心都是将横切关注点从业务逻辑中分离出来,从而实现更好的代码组织和管理。选择哪种配置方式取决于项目的具体需求和个人偏好。对于简单的项目或小型团队,基于...

    spring_aop xml方式实现aop

    总结来说,通过Spring的XML配置,我们可以定义连接点(方法)、切点(一组连接点)、通知(拦截器)和顾问(将切点与通知关联)来实现AOP。虽然XML配置相对繁琐,但它提供了一种灵活的方式来组织和管理切面逻辑。...

    spring aop xml实现

    在Spring中实现AOP,我们需要在XML配置文件中定义以下几个部分: 1. **配置Spring容器**:首先,确保Spring的配置文件(如`applicationContext.xml`)已经包含了AOP的命名空间,通常添加如下: ```xml xmlns:aop=...

    XML方式实现AOP编程

    **XML方式实现AOP编程** 在软件开发中,面向切面编程(Aspect-Oriented Programming,简称AOP)是一种编程范式,它旨在提高代码的可重用性和可维护性,通过将关注点分离,使得业务逻辑与横切关注点(如日志、事务...

    SpringXML方式实现AOP demo

    标题 "SpringXML方式实现AOP demo" 涉及到的是使用Spring框架通过XML配置来实现面向切面编程(AOP)的知识。面向切面编程是Spring框架的一个核心特性,它允许开发者在不修改原有业务代码的情况下,对系统进行横切...

    spring注解&XML配置AOP

    Spring注解AOP允许我们在不编写XML配置的情况下实现AOP功能。以下是一些关键的注解: 1. `@Aspect`:标记一个类为切面,这个类可以包含多个通知方法。 2. `@Before`:前置通知,方法会在目标方法执行前被调用。 3...

    aspectJ与XML配置的AOP

    **AspectJ与Spring AOP简介** Aspect Oriented Programming(面向切面编程,简称AOP)是一种编程范式,旨在减少代码中的重复性,提高模块化程度。...在实际项目中,可以根据需求和性能要求选择合适的方式来实现AOP。

    spring_aop_xml.rar_java aop_xml aop

    本教程将重点讲解如何通过XML配置来实现Spring AOP。 首先,我们要理解AOP的基本概念。AOP是一种编程范式,它允许开发者定义“切面”,这些切面可以包含业务逻辑的各个部分,比如日志、安全检查等。在运行时,这些...

    注解方式实现AOP编程

    本篇将主要讨论如何通过注解方式来实现AOP编程。 首先,我们需要了解Spring中的核心注解。`@Aspect`是定义一个切面的注解,通常会定义在一个独立的类上。这个类将包含切点(Pointcut)和通知(Advice)。 切点是...

    Spring实现AOP的4种方式

    本篇文章将详细探讨Spring实现AOP的四种主要方法:基于代理的方式、基于AspectJ的注解方式、基于XML的AOP配置以及基于Java的AOP配置。 1. 基于代理的实现 Spring的AOP支持两种代理类型:JDK动态代理和CGLIB代理。...

    spring famework 基于xml配置aop示例

    这个示例会帮助你理解如何在Spring框架中使用XML配置实现AOP,并提供了一种在不修改目标类代码的情况下,优雅地添加额外功能的方法。记住,正确理解和运用AOP能够极大地提升代码的可维护性和模块化程度。

    Spring AOP 的实现例子(基于XML配置实现)

    XML配置是Spring AOP早期的主要实现方式,虽然现在有更简洁的注解式配置,但理解XML配置方式对于深入理解AOP原理仍然很有帮助。下面我们将详细探讨如何通过XML配置实现Spring AOP。 首先,我们需要在Spring配置文件...

    spring aop xml 实例

    本实例主要探讨的是使用XML配置的方式来实现AOP。XML配置虽然相比注解方式略显繁琐,但它提供了更大的灵活性,尤其是在需要对多个类或方法应用相同通知(Advice)时。 首先,我们需要在Spring的配置文件中启用AOP...

    SpringMVC用XML方式实现AOP的方法示例

    SpringMVC用XML方式实现AOP的方法示例 本文主要介绍了SpringMVC用XML方式实现AOP的方法示例,通过示例代码详细地介绍了如何使用XML方式来实现AOP。AOP(Aspect-Oriented Programming)是一种编程范式,它可以将横切...

Global site tag (gtag.js) - Google Analytics