`
conquer0
  • 浏览: 78431 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

spring3的AOP示例

阅读更多
applicationContex.xml需要加入:
<!-- 使用注解定义切面 -->
<aop:aspectj-autoproxy proxy-target-class="true" />

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;


/**
* LOG切面类
* 主要记录Log日志
*/
@Aspect
public class LogAOP
{
   
    /** 定义共用方法切入点
     */
    @Pointcut("execution(public * *(..))")
    public void inPublicMethod()
    {
    }
   
    /** 定义数据访问类方法切入点
     */
    @Pointcut("execution(* com.huawei.support.*.dao.*.*(..))")
    public void inDAOPackage()
    {
       
    }
   
    /** 定义业务处理类方法切入点
     */
    @Pointcut("execution(* com.huawei.support.*.service.*.*(..))")
    public void inServicePackage()
    {
       
    }
   
    /** 定义对外服务类方法切入点
     */
    @Pointcut("execution(* com.huawei.support.*.ws.*.*(..))")
    public void inWebServicePackage()
    {
       
    }
   
    /** 定义总切入点
     */
    @Pointcut("inPublicMethod() && (inDAOPackage() || inServicePackage() ||inWebServicePackage())")
    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("[")
                .append(pjp.getTarget().getClass().getName())
                .append(".")
                .append(pjp.getSignature().getName())
                .append("]");
       
        long begin = System.currentTimeMillis();
        sb.append("开始时间:[").append(DateUtil.format(begin,
                DateUtil.DATE_PATTERN2)).append("]");
       
        //实际方法执行
        Object result = pjp.proceed();
       
        long end = System.currentTimeMillis();
        sb.append("结束时间:[")
                .append(DateUtil.format(end, DateUtil.DATE_PATTERN2))
                .append("]");
        sb.append("共耗费:[").append((end - begin)).append("ms]");
        log.info(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);
    }
}
分享到:
评论

相关推荐

    Spring AOP 1.0示例

    在这个“Spring AOP 1.0示例”中,我们重点关注如何在实际项目中应用这一特性。 首先,我们需要了解AOP的基本概念。AOP的核心思想是将那些影响多个类的公共行为(如日志记录)抽取出来,形成独立的模块,称为切面...

    Spring的AOP示例DEMO HELLOWORLD

    本示例DEMO "Spring的AOP示例DEMO HELLOWORLD" 将引导我们深入理解Spring AOP的核心概念,并通过一个简单的 HelloWorld 示例来展示其实现过程。 首先,面向切面编程(AOP)是一种编程范式,旨在提高代码的可维护性...

    spring2.5.6 aop简单示例

    在本示例中,我们将深入探讨Spring框架2.5.6版本中的面向切面编程(AOP)概念。Spring AOP是Spring框架的核心组件之一,它允许开发者在不修改源代码的情况下,对程序进行横切关注点(如日志、事务管理、性能监控等)...

    SpringAOP示例讲解

    `SpringAop.ppt`文件很可能包含了一个详细的讲解,涵盖了Spring AOP的基本概念、配置方式、使用注解声明切面、基于XML的配置以及如何自定义切面。PPT通常会通过图表、代码示例和流程图来帮助理解复杂的概念,使得...

    spring aop API示例

    在这个"spring aop API示例"中,我们将深入探讨如何利用Spring AOP的四种通知类型:Before、After、AfterThrowing和Around,以及它们在实际开发中的应用。 1. **Before通知**: 在方法执行前触发,可以用来执行...

    spring aop简单应用示例

    本示例将深入探讨Spring AOP的基础知识,以及如何在实际应用中使用它。 首先,我们来看"LogProfilter.java",这很可能是实现一个日志拦截器的类。在Spring AOP中,这样的类通常被称为切面(Aspect)。切面是封装了...

    spring-boot aop

    本示例是关于如何在Spring Boot项目中实现AOP功能的一个简单演示。 首先,我们需要了解AOP的基本概念。AOP的核心是切面(Aspect),它封装了跨越多个对象的行为或关注点,如日志记录。切点(Pointcut)定义了在何处...

    Spring AOP完整例子

    Spring AOP(面向切面编程)是Spring框架的核心特性之一,它允许开发者在不修改源代码的情况下,通过插入切面来增强或改变程序的行为。在本教程中,我们将深入探讨Spring AOP的不同使用方法,包括定义切点、通知类型...

    Spring IOC AOP学习示例

    Spring IOC AOP学习示例代码,包含Spring常用操作示例和所有所需jar文件。参考博客:http://blog.csdn.net/daijin888888/article/details/51735291

    Spring AOP代码示例

    Spring AOP,全称Aspect-Oriented Programming(面向切面编程),是Spring框架的一个重要组成部分。它提供了一种模块化和声明式的方式来处理系统中的交叉关注点,如日志、性能监控、安全性、事务管理等。通过AOP,...

    spring-aop.jar

    以下是一个简单的Spring AOP使用示例: ```java @Aspect public class LoggingAspect { @Before("execution(* com.example.service.*.*(..))") public void logBefore(JoinPoint joinPoint) { // 日志记录代码 ...

    spring_aop.rar_spring_aop

    - "spring-aop-1"可能是一个基础的AOP示例,演示了如何定义一个切面,包含前置通知、后置通知等,用于日志记录。 - "spring-aop-2"可能是一个更复杂的例子,涉及到事务管理,通过环绕通知实现数据库操作的事务控制。...

    spring之AOP(动态代理)

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

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

    Spring AOP(面向切面编程)是Spring框架的重要组成部分,它提供了一种强大的方式来实现横切关注点,如日志、事务管理、性能监控等,而无需侵入业务代码。下面将详细介绍Spring AOP的注解方式和XML配置方式。 ### ...

    Spring的Aop和Ioc示例

    学习这个示例,你可以看到如何在实际项目中配置和使用Spring的IOC和AOP,进一步理解它们如何帮助简化代码并提高代码质量。对于初学者来说,这是一个很好的起点,可以帮助他们掌握Spring的核心特性,并应用于实际开发...

    Spring.net Aop 例子

    在本示例中,我们将深入探讨Spring.NET AOP如何实现动态代理,以及如何利用它来增强应用程序的可维护性和可扩展性。 动态代理是AOP的核心概念,它能够在运行时动态创建代理对象,这个代理对象会拦截目标对象的方法...

    基于xml的SpringAOP实例

    Spring AOP,全称Aspect-...在提供的压缩包文件"aop"中,可能包含了示例代码,用于演示上述配置和使用过程。学习者可以通过阅读和运行这些代码来加深对Spring AOP的理解,进一步掌握如何在实际项目中应用面向切面编程。

    Spring示例_Printer_Spring_AOP_Spring_Proxy

    在本示例中,"Spring示例_Printer_Spring_AOP_Spring_Proxy" 主要关注的是Spring框架中的核心概念,特别是AOP(面向切面编程)和代理模式的应用。让我们深入探讨这些知识点。 首先,Spring框架是Java开发中最常用的...

    Spring之AOP介绍

    ### Spring之AOP介绍 #### 一、AOP概述 面向方面编程(Aspect-Oriented Programming,简称AOP)作为一...通过上面的介绍和示例,我们可以看到Spring AOP的强大之处,以及它是如何简化开发过程中对横切关注点的处理。

    spring注解aop demo

    **三、Spring注解AOP示例** ```java @Aspect @Component public class LoggingAspect { @Before("execution(* com.example.service.*.*(..))") public void logBefore(JoinPoint joinPoint) { // 执行日志记录 ...

Global site tag (gtag.js) - Google Analytics