`
elfkingw
  • 浏览: 11653 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Spring3 aop 例子

 
阅读更多

 

 

package com.richie.framework.service;


import org.apache.log4j.Logger;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.AfterThrowing;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;

@Aspect
public class LogExAop {
	public static int PROCESS_TIME_OUT =12;
	   /** 定义共用方法切入点 
     */ 
    @Pointcut("execution(public * *(..))") 
    public void inPublicMethod() 
    { 
    } 
    
    /** 定义数据访问类方法切入点 
     */ 
    @Pointcut("execution(* com.richie.*.dao.*.*(..))") 
    public void inDAOPackage() 
    { 
    } 
    
    /** 定义业务处理类方法切入点 
     */ 
    @Pointcut("execution(* com.richie.*.service.*.*(..))") 
    public void inServicePackage() 
    { 
        
    } 
    
    /** web层方法切入点 
     */ 
    @Pointcut("execution(* com.richie.*.web.*.*(..))") 
    public void inWebPackage() 
    { 
        
    } 
    
    /** 所有的public方法(包括web、service) 
     */ 
    @Pointcut("inPublicMethod() && (inDAOPackage()||inServicePackage() ||inWebPackage())") 
    public void supportAOP() 
    { 
        
    } 
    
    /** 切入点执行范围   主要记录类处理花费时间  主要用于调试用
     * @param pjp       切入点 
     * @throws Throwable 切入点抛出的异常 
     */ 
    @Around("supportAOP()") 
    public Object doAround(ProceedingJoinPoint pjp) throws Throwable 
    { 
        Logger log = Logger.getLogger(pjp.getTarget().getClass()); 
        StringBuilder sb = new StringBuilder(); 
        sb.append("\n==================【") 
                .append(pjp.getTarget().getClass().getName()) 
                .append(".") 
                .append(pjp.getSignature().getName()) 
                .append("】"); 
        
        long begin = System.currentTimeMillis(); 
        //实际方法执行 
        Object result = pjp.proceed(); 
        long end = System.currentTimeMillis(); 
        sb.append("花费时间:[").append((end - begin)/1000).append("s]"); 
        log.debug(sb.toString()); 
        return result; 
    } 
    
    /** 切入点抛出异常 记录日志
     * @param jp        切入点 
     * @param ex        抛出的异常 
     */ 
    @AfterThrowing(pointcut = "supportAOP()", throwing = "ex") 
    public void doThrowing(JoinPoint jp, Throwable ex) 
    { 
        Logger log = Logger.getLogger(jp.getTarget().getClass()); 
        log.error(ex.getMessage(), ex); 
    } 
    
    
}

 注意点:

1. Spring的配置中引入下列元素来启用Spring对@AspectJ的支持:

       <aop:aspectj-autoproxy  /> 

2.LogExAop 要在Spring 作为bean 配置

  <bean id="logExe" class="com.richie.framework.service.LogExAop">
 </bean>

分享到:
评论

相关推荐

    简单spring aop 例子

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

    Spring 2.5 AOP 例子

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

    Spring.net Aop 例子

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

    Spring AOP完整例子

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

    spring的aop简单例子

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

    spring mvc框架下的aop例子

    下面是一个简单的Spring MVC中AOP的例子,分为配置和实现两部分。 ### 配置 1. 在`spring-common.xml`配置文件中,我们需要引入AOP相关的命名空间,并声明一个`&lt;aop:aspectj-autoproxy&gt;`元素。这会告诉Spring容器...

    spring aop例子

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

    spring-boot aop

    Spring Boot AOP(面向切面编程)是一种强大的设计模式,它允许我们在不修改现有代码的情况下,插入额外的功能或监控代码。在Spring框架中,AOP主要用于日志记录、事务管理、性能统计等场景。本示例是关于如何在...

    spring_aop例子

    Spring AOP,全称Aspect-Oriented Programming(面向切面编程),是Spring框架的重要组成部分,它为应用程序提供了声明式的...通过理解并实践Spring AOP的例子,你可以更好地掌握这一强大的功能,并在实际项目中应用。

    Spring3.1AOP简单例子

    3. **配置文件(XML或Java配置)**:在Spring的XML配置中,我们需要使用`&lt;aop:config&gt;` 和 `&lt;aop:aspect&gt;` 标签来声明切面,并通过`&lt;aop:pointcut&gt;` 定义切入点。对于注解驱动的AOP,我们可以使用`@Aspect` 注解标记...

    SpringAOP的例子

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

    spring aop 注解例子

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

    myeclipse spring IOC和AOP 例子

    下面是一个简单的AOP例子,创建一个记录方法执行时间的通知: ```java @Aspect public class LoggingAspect { @Before("execution(* com.example.service.*.*(..))") public void logBefore(JoinPoint joinPoint)...

    spring aop简单例子

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

    spring-aop.jar

    《深入解析Spring AOP框架——以spring-aop.jar为例》 Spring AOP,全称Aspect Oriented Programming(面向切面编程),是Spring框架的核心部分之一,它为Java开发者提供了强大的面向切面的编程能力。本文将围绕...

    spring aop 经典例子(原创)

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

    spring之AOP(动态代理)

    在Spring框架中,AOP(面向切面编程)是一种强大的设计模式,它允许开发者将关注点分离,将横切关注点(如日志、事务管理、权限检查等)与核心业务逻辑解耦。AOP的核心概念是切面、通知、连接点、切入点和织入。在...

    spring_aop.rar_spring_aop

    - "spring-aop-2"可能是一个更复杂的例子,涉及到事务管理,通过环绕通知实现数据库操作的事务控制。 通过这个实例工程,学习者可以直观地理解Spring AOP的工作原理,如何定义切面、配置通知以及如何在实际项目中...

    springAOP演示例子

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

    Spring IOC AOP MVC 简单例子

    在`SpringAOP`目录中,可能包含了定义切面、通知(advice)、切入点(pointcut)等内容。AOP的实现通常通过定义切面类,其中包含通知方法,并通过切入点表达式确定这些通知在何时何地执行。这使得代码更加模块化,...

Global site tag (gtag.js) - Google Analytics