`
penghao122
  • 浏览: 362652 次
  • 性别: Icon_minigender_1
  • 来自: 广东珠海
社区版块
存档分类
最新评论

学习spring中的advice的一个例子

阅读更多
package onlyfun.caterpillar;

public interface IHello {
    public void hello(String name);
}


package onlyfun.caterpillar;

public class HelloSpeaker implements IHello {
	
    public void hello(String name) {
        System.out.println("Hello, " + name); 
    }
}



package onlyfun.caterpillar;

import java.lang.reflect.Method;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.springframework.aop.MethodBeforeAdvice;

public class LogBeforeAdvice 
        implements MethodBeforeAdvice { 
    private Logger logger = 
            Logger.getLogger(this.getClass().getName()); 
    
    public void before(Method method, Object[] args, 
                     Object target) throws Throwable { 
        logger.log(Level.INFO, 
                "method starts..." + method); 
   } 
}



package onlyfun.caterpillar;

import java.lang.reflect.Method;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.springframework.aop.AfterReturningAdvice;

public class LogAfterAdvice 
                    implements AfterReturningAdvice { 
    private Logger logger = 
            Logger.getLogger( this.getClass().getName()); 
    
    public void afterReturning(Object object, 
                               Method method, 
                               Object[] args, 
                               Object target) throws Throwable { 
        logger.log(Level.INFO, "method ends..." + method); 
   } 
}



//测试类
package onlyfun.caterpillar;

import org.springframework.context.ApplicationContext;
import org.springframework.context.
              support.FileSystemXmlApplicationContext;

public class SpringAOPDemo {
    public static void main(String[] args) {
        ApplicationContext context = 
                new FileSystemXmlApplicationContext("beans-config.xml"); 
        IHello helloProxy = (IHello) context.getBean("helloProxy"); 
        helloProxy.hello("penghao122"); 
    }
}



beans_config.xml

    
     <bean id="logBeforeAdvice" 
          class="onlyfun.caterpillar.LogBeforeAdvice"/> 
    
    <bean id="logAfterAdvice" 
          class="onlyfun.caterpillar.LogAfterAdvice"/> 

    <bean id="helloSpeaker" 
          class="onlyfun.caterpillar.HelloSpeaker"/> 
    
    <bean id="helloProxy" 
          class="org.springframework.aop.framework.ProxyFactoryBean"> 
        <property name="proxyInterfaces"> 
            <value>onlyfun.caterpillar.IHello</value> 
        </property> 
        <property name="target"> 
            <ref bean="helloSpeaker"/> 
        </property> 
        <property name="interceptorNames"> 
            <list> 
                <value>logBeforeAdvice</value> 
                <value>logAfterAdvice</value> 
            </list> 
        </property> 
    </bean> 

分享到:
评论

相关推荐

    一个spring例子

    在这个"一个spring例子"中,我们将深入探讨Spring的关键特性以及如何在实践中应用它们。 首先,Spring的核心特性之一是依赖注入(DI)。DI允许开发者解耦组件间的依赖关系,使得组件更加独立,易于测试和维护。在...

    SPRING学习小例子

    通过这个例子,我们可以了解到如何利用Spring构建一个完整的MVC应用,处理数据库交互,以及如何利用AOP和事务管理增强系统的功能。学习并掌握这些知识点,对于提升Java开发能力,尤其是企业级应用开发,具有重要的...

    spring 学习 springcore例子

    在“springcore”这个例子中,你可能将会接触到这些概念,并通过实际的代码示例来理解和应用它们。通过创建和配置Bean,理解DI的工作原理,以及如何利用Spring提供的各种功能来构建可扩展和可维护的应用程序。

    基于SPRING的一个小例子

    本示例旨在为初学者提供一个基础的Spring应用实践,帮助理解Spring的核心概念和使用方式。 在Spring框架中,核心特性包括依赖注入(Dependency Injection, DI)和面向切面编程(Aspect-Oriented Programming, AOP)...

    java入门级spring加maven的小例子

    在这个入门级的小例子中,我们将通过结合Maven来快速搭建一个Spring项目,帮助初学者理解Spring与Maven的基本用法。 首先,Maven是一个项目管理工具,它管理项目的构建、报告和依赖关系,通过一个配置文件pom.xml,...

    简单spring aop 例子

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

    spring 学习 blog例子

    这个"spring 学习 blog例子"是一个典型的教程,旨在帮助开发者通过实际操作来掌握Spring的核心概念和技术。 在Spring框架中,核心组件包括Spring Core、Spring Beans和Spring Context。Spring Core提供了基础的DI...

    spring入门上手小例子

    AOP是Spring的另一个重要特性,它允许开发者定义“切面”(Aspect),将关注点(如日志、事务管理等)从主业务逻辑中分离出来。在Spring AOP中,切面可以包含通知(Advice)、切点(Pointcut)和连接点(Join Point...

    Spring的小例子

    这个“Spring的小例子”旨在为初学者提供一个简单的起点,让他们能够快速理解和掌握Spring的核心概念。 Spring框架的核心特性包括依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented ...

    Spring IOC AOP MVC 简单例子

    在这个简单的例子中,`Spring IOC AOP MVC 简单例子`可能是整个项目的整合示例,它将上述三个核心组件结合在一起,演示了如何在一个实际的Web应用中使用Spring。这个示例可能会包括一个简单的用户登录功能,展示如何...

    spring 学习 tutorial例子

    例如,你可以创建一个名为`UserService`的类,并通过`@Component`注解标记为Spring Bean,然后通过`@Autowired`注解自动注入依赖的` UserRepository`。 其次,AOP是Spring的另一个重要特性,它允许我们在不修改源...

    spring的aop简单例子

    在这个例子中,`LoggingAspect`是一个切面,`logBefore`方法是一个前置通知,将在匹配的方法执行前运行。 除了这些基本的通知类型,还有`@AfterReturning`(后返回通知)、`@AfterThrowing`(异常抛出通知)和`@...

    一个spring的例子

    在这个"一个spring的例子"中,你可能需要完成以下步骤:创建Spring项目、配置Bean、理解IoC和DI、实现AOP、进行数据库操作和构建一个简单的Spring MVC应用。通过实践这些,你将深入理解Spring框架的强大功能和灵活性...

    spring动态代理类的示范小版本,很简单的例子

    Spring 动态代理是Spring框架中的一个重要特性,它允许我们在不修改原有代码的情况下,为对象增加额外的功能。这个"spring动态代理类的示范小版本,很简单的例子"应该是提供了一个简单易懂的示例,帮助我们理解...

    利用SPring AOP配置切面的一个例子

    本文将通过一个具体的例子来介绍如何在Spring框架中使用面向切面编程(Aspect Oriented Programming, AOP)。我们将关注如何定义一个切面(Aspect),以及如何在目标方法(即被通知的方法)执行前后添加特定的行为。...

    spring aop例子

    要创建一个Spring AOP的例子,我们首先需要定义一个切面类,它可能包含一个或多个通知方法。然后,我们需要定义切入点表达式,这可以使用`@Pointcut`注解完成。接下来,我们可以使用`@Before`, `@After`, `@Around`,...

    spring学习笔记(十六)-声明式事务的例子

    在本篇“spring学习笔记(十六)-声明式事务的例子”中,我们将深入探讨这一主题。 首先,声明式事务管理基于AOP(面向切面编程)实现,Spring通过代理模式在方法调用前后自动插入事务管理的代码。它主要通过两种方式...

    Spring 2.5 AOP 例子

    Spring 2.5 AOP(面向切面编程)是Java应用程序中的一个重要概念,它允许开发者在不修改原有代码的情况下插入新的行为或监控。这个例子旨在帮助我们理解和应用Spring框架的AOP特性。以下是对该主题的详细解释: 一...

    spring切面小例子

    连接点是在程序执行过程中可以插入切面的一个点,如方法调用或异常处理;通知是在特定连接点上执行的动作;切点是定义通知将应用到的一组连接点的规范。 在Spring中,我们可以通过注解来声明切面。首先,创建一个带...

Global site tag (gtag.js) - Google Analytics