`
appletxx
  • 浏览: 1980 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

spring aop小例子

阅读更多
接口类:
package com.test.TestSpring3;   
  
public interface UserService // 被拦截的接口   
{   
    public void printUser(String user);   
}   



实现类:
package com.test.TestSpring3;   
  
public class UserServiceImp implements UserService // 实现UserService接口   
{   
    public void printUser(String user) ...{   
        System.out.println("printUser user:" + user);// 显示user   
    }   
}   



AOP拦截器
package com.test.TestSpring3;   
  
import org.aopalliance.intercept.MethodInterceptor;   
import org.aopalliance.intercept.MethodInvocation;   
  
public class UserInterceptor implements MethodInterceptor   
// AOP方法拦截器   
{   
  
    public Object invoke(MethodInvocation arg0) throws Throwable ...{   
  
        try {   
  
            if (arg0.getMethod().getName().equals("printUser"))   
            // 拦截方法是否是UserService接口的printUser方法   
            {   
                Object[] args = arg0.getArguments();// 被拦截的参数   
                System.out.println("user:" + args[0]);   
                arg0.getArguments()[0] = "hello!";// 修改被拦截的参数   
  
            }   
  
            System.out.println(arg0.getMethod().getName() + "---!");   
            return arg0.proceed();// 运行UserService接口的printUser方法   
  
        } catch (Exception e) {   
            throw e;   
        }   
    }   
}   



测试类

package com.test.TestSpring3;   
  
import org.springframework.beans.factory.BeanFactory;   
  
import org.springframework.beans.factory.xml.XmlBeanFactory;   
import org.springframework.context.ApplicationContext;   
import org.springframework.context.support.ClassPathXmlApplicationContext;   
import org.springframework.context.support.FileSystemXmlApplicationContext;   
import org.springframework.core.io.ClassPathResource;   
import org.springframework.core.io.Resource;   
import org.springframework.web.context.support.WebApplicationContextUtils;   
  
public class TestInterceptor {   
  
    public static void main(String[] args) {   
        ApplicationContext ctx = new FileSystemXmlApplicationContext(   
                "classpath:applicationContext.xml");   
//        ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");       
           
        UserService us = (UserService) ctx.getBean("userService");   
        us.printUser("shawn");   
  
    }   
}


配置文件

<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">  
<beans>  
    <bean id="userServiceImp"  
        class="com.test.TestSpring3.UserServiceImp" />  
  
    <bean id="userInterceptor" class="com.test.TestSpring3.UserInterceptor" />  
  
    <bean id="userService"  
        class="org.springframework.aop.framework.ProxyFactoryBean">  
      <!-- 代理接口 -->  
        <property name="proxyInterfaces">  
            <value>com.test.TestSpring3.UserService</value>  
        </property>  
       <!-- 目标实现类 -->  
        <property name="target">  
            <ref local="userServiceImp" />    
      </property>  
        <!-- 拦截器 -->  
        <property name="interceptorNames">  
            <list>  
                <value>userInterceptor</value>  
            </list>  
        </property>  
    </bean>  
  
</beans>  


输出:
  user:shawn
  printUser---!
  printUser user:hello!
分享到:
评论

相关推荐

    spring AOP 小例子

    在本示例中,我们将通过两个小例子来深入理解Spring AOP的核心概念和使用方法。 首先,我们来看第一个例子——Spring_AOP_Demo01。在这个例子中,我们可能会涉及到以下几个关键知识点: 1. **AOP核心概念**:AOP...

    简单spring aop 例子

    现在,我们来看如何创建一个简单的Spring AOP例子: 1. **定义切面(Aspect)**:切面是包含通知(Advice)和切入点(Pointcut)的类。通知定义了要执行的逻辑,切入点定义了何时执行。例如,我们可以创建一个名为`...

    Spring AOP完整例子

    在Spring AOP的例子中,我们可能会创建一个`@RunWith(SpringJUnit4ClassRunner.class)`标记的测试类,以利用Spring的测试支持。在测试方法中,可以注入需要的bean,然后调用方法来触发AOP代理。这样,通知将在适当的...

    spring的aop简单例子

    这个简单例子将帮助我们理解AOP的基本概念和如何在Spring框架中实现它。 首先,我们要知道AOP的核心概念:切面、通知、连接点、切点、目标对象和代理。切面是包含横切关注点(如日志记录、事务管理等)的模块化组件...

    spring aop 经典例子(原创)

    在这个经典例子中,我们将深入理解Spring AOP的核心概念,并通过实际操作来加深印象。 首先,AOP的核心是切面(Aspect),它封装了横切关注点,如日志记录、事务管理等。在Spring AOP中,切面通常由一个或多个通知...

    SpringAOP的例子

    在这个"SpringAOP的例子"中,我们将深入探讨如何在Eclipse环境下利用Spring AOP和动态代理来实现这些功能。 首先,让我们理解什么是AOP。AOP是一种编程范式,旨在减少代码的重复性和增强可维护性。在传统的OOP中,...

    spring aop简单例子

    现在,我们来看一个简单的Spring AOP例子: 首先,我们需要定义一个切面,包含一个通知。例如,我们创建一个名为`LoggingAspect`的类,其中有一个`logExecutionTime`方法作为前置通知,记录方法的执行时间: ```...

    springAOP演示例子

    这个"springAOP演示例子"很可能会包含一个简单的Spring项目,展示如何创建和配置切面,定义切入点和通知,并观察其在实际代码中的工作原理。通过深入理解和实践这个例子,你可以更好地掌握Spring AOP的使用,提升你...

    spring aop 注解例子

    **Spring AOP 注解例子详解** 在 Spring 框架中,面向切面编程(Aspect Oriented Programming,AOP)是一种强大的设计模式,它允许我们分离关注点,将业务逻辑与系统服务(如日志、事务管理等)解耦。在 Spring AOP...

    spring aop例子

    在"spring aop例子"中,我们可以看到`src`目录,这个通常包含Java源代码,其中可能包含了切面类、通知方法以及使用了切面的业务逻辑类。`extjstest`可能是测试目录,用于验证AOP配置和功能是否正确工作。`QQ五笔截图...

    Spring 2.5 AOP 例子

    Spring 2.5 AOP(面向切面编程)...综上所述,Spring 2.5 AOP例子展示了如何利用类扫描和XML配置实现面向切面编程。通过理解这些概念和实践,我们可以更高效地管理和维护我们的应用程序,使其更具可扩展性和可维护性。

    Spring AOP例子实现源码

    在`springAop`目录下,你应该会看到如`LoggingAspect.java`这样的源码文件,它实现了切面逻辑。此外,可能还有一个`Main`类用于启动应用程序并演示AOP如何工作。通过运行这个示例,你可以观察到切面是如何在运行时...

    spring aop的demo

    在`springAop1`这个压缩包中,可能包含了一个简单的应用示例,展示了如何定义一个切面类,以及如何在该类中定义通知方法。例如,我们可能会看到一个名为`LoggingAspect`的类,其中包含了`@Before`注解的方法,用于在...

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

    Spring AOP,即Spring的面向切面编程,是Spring框架中的一个重要组成部分,它提供了一种在不修改原有代码的情况下,对程序进行功能增强的技术。在实际开发中,我们经常使用AOP来处理如日志记录、事务管理、权限校验...

    Spring AOP 日志管理 实例

    Spring AOP 日志管理 实例LoggingThrowsAdvice.java

    spring aop spring aop

    在上述例子中,运行时织入通过Spring的ApplicationContext来实现。 5. **代理(Proxy)**:Spring AOP通过动态代理机制创建目标对象的代理,代理对象在调用目标方法时会自动插入切面逻辑。在Java项目中,Spring可以...

    springAop的配置实现

    **Spring AOP 配置实现详解** Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架的重要组成部分,它允许我们通过分离关注点来简化应用程序的开发。在传统的面向对象编程中,业务逻辑与日志记录...

    Spring AOP简单demo

    **Spring AOP 简介** Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架的一个重要模块,它扩展了传统的面向对象编程,允许开发者定义“横切关注点”(cross-cutting concerns),如日志、事务...

    spring aop 自定义切面示例

    在Spring AOP(面向切面编程)中,自定义切面是实现业务逻辑解耦、增强代码可维护性的重要手段。AspectJ是一个强大的面向切面的编程库,它提供了与Spring AOP集成的能力,使我们可以编写更为灵活和模块化的代码。...

    Spring.net Aop 例子

    通过这个例子,你可以学习到如何在Spring.NET环境中实现AOP,理解动态代理的工作原理,并掌握如何在实际项目中应用AOP来提高代码的灵活性和可维护性。这将有助于你编写更加模块化、易于维护的软件系统。

Global site tag (gtag.js) - Google Analytics