`
shyboy0358
  • 浏览: 35602 次
文章分类
社区版块
存档分类
最新评论

在spring中利用aop实现日志

阅读更多
首先,写一个类,继承aop的MethodInterceptor类。
public class LogIntecepter implements MethodInterceptor {
    
    public final Object invoke(
            final MethodInvocation invocation) throws Throwable {
        return invokeUnderTrace(
                invocation);

    }
    
    protected final Object invokeUnderTrace(
            final MethodInvocation invocation) throws Throwable {

        Object result = null;
        KdwDebugLog debugLogger = KdwDebugLog.instanceLog();
        String strClassName = "";
        try {
            strClassName = invocation.getThis().getClass().getName();
              if (debugLogger.isInfoEnabled()) {
                StringBuilder strLog = new StringBuilder(strClassName);
                strLog.append("的");
                strLog.append(invocation.getMethod().getName());
                strLog.append("() 开始。");
                debugLogger.info(strLog.toString());
            }
          
            result = invocation.proceed();
          
            if (debugLogger.isInfoEnabled()) {
                StringBuilder strLog = new StringBuilder(strClassName);
                strLog.append("的");
                strLog.append(invocation.getMethod().getName());
                strLog.append("() 正常结束。");
                debugLogger.info(strLog.toString());
            }
        } catch (Throwable ex) {
                        if (debugLogger.isErrorEnabled()) {
                StringBuilder strLog = new StringBuilder(strClassName);
                strLog.append("的");
                strLog.append(invocation.getMethod().getName());
                strLog.append("() 异常结束。");
                debugLogger.error(strLog.toString());
            }
            if (ex instanceof CannotCreateTransactionException
                    || ex instanceof TransactionSystemException) {
                BLogicResult bResult = new BLogicResult();
                BLogicMessages messages = new BLogicMessages();
                messages.add(Globals.MESSAGE_KEY, 
                        new BLogicMessage(
                           DBExceptionEnum.EXCEPTION_OTHER.getValue()));
                bResult.setErrors(messages);
                bResult.setResultString("fatal");
                return bResult;
            }
            throw ex;
        }

        return result;
    }
}


其次,配置spring的aop文件
<bean name="logIntecepter" 
          scope="prototype"
              class="test.LogIntecepter"/>
   <aop:config>
       <aop:pointcut id="logBeans" expression="bean(*BLogic)"/>
       <aop:advisor 
           pointcut-ref="logBeans" 
           advice-ref="logIntecepter"/>
   </aop:config>


结果:
xxxx类的方法名()开始。
xxxx类的方法名()正常结束。

MethodInvocation相关方法说明:

getArguments() -- 获得目标对象方法的入参
您可能希望更改包含在MethodInvocation类中的信息,以便在使用proceed()调用被截获的方法之前对被截获方法的参数设置新值。

通过对MethodInvocation对象调用getArguments()方法,然后在返回的数组中设置其中的一个参数对象,最初传递给被截获的方法的参数可以被更改。
例子:invocation.getArguments()[0] = new Integer(20);

proceed() -- 执行目标对象方法,并返回目标对象的返回结果

getThis() -- 获取目标对象class

getMethod() -- 获取被执行的目标对象的方法
分享到:
评论

相关推荐

    spring aop实现日志功能

    在IT行业中,Spring框架是Java开发中的一个基石,尤其在企业级应用开发中扮演着重要角色。Spring AOP(Aspect ...通过运行这些测试,我们可以看到AOP日志功能的实际效果,并学习如何在自己的项目中应用这些概念。

    Flex整合Spring实现aop日志管理

    通过这样的整合,我们可以利用Flex的交互性和Spring的AOP能力,实现高效、灵活的日志管理系统。这种设计不仅适用于记录操作日志,还可以扩展到其他跨切面关注点,如事务管理、权限控制等,从而提高代码的可读性和可...

    Spring mvc mybatis plus 实现AOP 切面日志系统

    本项目利用AOP实现切面日志系统,可以在关键操作执行前后自动记录日志,提高代码的可维护性和可扩展性。 在具体实现上,开发者可能创建了一个`@Aspect`注解的切面类,其中包含一个或多个`@Pointcut`定义的切入点...

    springboot spring aop 拦截器注解方式实现脱敏

    总结一下,通过上述步骤,我们已经在Spring Boot应用中利用Spring AOP和注解方式实现了数据脱敏。这个拦截器可以在不修改原有业务代码的情况下,确保敏感信息在响应给客户端之前得到处理,提高了应用的安全性。同时...

    spring aop 切面添加日志

    本项目旨在演示如何在Spring AOP中添加日志功能,以实现对应用程序执行过程的透明跟踪。通过使用Java 1.8,我们可以利用其新特性,如Lambda表达式,来简化代码。 首先,让我们理解Spring AOP的基本概念。AOP是面向...

    Spring AOP的简单实现

    Spring AOP(面向切面编程)是Spring框架中的一个重要组件,它允许我们在不修改源代码的情况下,对程序的行为进行统一管理和增强...在实际开发中,利用AOP可以有效地提高代码的复用性和模块化程度,降低系统的耦合度。

    利用 spring annotation AOP 反射 记录日志

    我们通过反射获取这些信息,并将其记录在日志中。 当然,除了手动编写切面和切入点,Spring还支持基于注解的切点表达式,可以直接在被代理的方法上使用`@Loggable`等自定义注解,然后在切面中解析并处理这些注解,...

    Spring Mvc AOP通过注解方式拦截controller等实现日志管理

    Spring MVC AOP日志管理通常与日志框架(如Log4j、Logback或Java内置的java.util.logging)集成。以下以Log4j为例: 1. 引入依赖:在项目pom.xml中添加Log4j的依赖。 2. 配置Log4j:创建log4j.properties或log4j....

    研究下Spring中AOP的实现?

    在Spring框架中,AOP(面向切面编程)是一种强大的设计模式,它允许开发者将关注点分离,将横切关注点(如日志、事务管理、...在实际项目中,可以利用Spring AOP进行事务管理、性能监控、权限控制等多种功能的实现。

    springAop与spring定时器

    Spring AOP(面向切面编程)是Spring框架中的一个重要组件,它允许我们在不修改源代码的情况下,通过在程序运行时动态地将代码插入到方法调用中,来实现跨切面的关注点,如日志记录、性能监控、事务管理等。而Spring...

    Spring AOP实现机制

    **Spring AOP 实现机制详解** Spring AOP(面向切面编程)是Spring框架的核心特性之一,它允许程序员在不修改源代码的...通过深入理解Spring AOP的实现机制,我们可以更好地利用这一强大的工具,优化我们的应用程序。

    spring boot aop 统一处理日志

    在Spring Boot应用中,AOP(面向切面编程)是一种强大的工具,用于实现代码的解耦和模块化,尤其适用于处理横切关注点,如日志记录、事务管理、安全控制等。本教程将深入探讨如何利用Spring Boot的AOP特性来实现日志...

    spring AOP 切面日志 分层打日志

    在这里,我们重点关注如何利用Spring AOP实现分层日志记录。 **一、Spring AOP基本概念** 1. **切面(Aspect)**: 切面是封装了横切关注点的模块,例如日志记录就是一个横切关注点,它横跨多个对象和类。 2. **通知...

    Spring之AOP在鉴权和日志记录中的应用

    本篇将深入探讨如何利用Spring AOP来实现鉴权和日志记录。 **二、AOP基础知识** 1. **切面(Aspect)**:AOP的核心概念,它封装了关注点,如日志记录或权限验证。一个切面通常包含一个或多个通知(advice)。 2. ...

    spring aop实现日志分析管理

    在Spring AOP(面向切面编程)中实现日志分析管理是一种常见的做法,它能帮助开发者跟踪和理解系统运行过程中的行为,同时提供详细的错误日志以支持运维工作。通过元注解的方式,我们可以轻松地将日志记录功能集成到...

    反射实现 AOP 动态代理模式(Spring AOP 的实现原理)

    面向切面编程(AOP)是一种编程范式,旨在将横切关注点(如日志、安全等)与业务逻辑分离,从而提高模块化。...利用Java反射机制和Spring AOP框架,开发者可以方便地实现AOP,从而提升代码的模块化和可维护性。

    spring.net结合三层AOP异常日志记录功能

    在本示例中,我们将探讨如何利用Spring.NET在三层架构中实现AOP异常日志记录功能。 1. **三层架构**:在软件开发中,三层架构是一种常见的设计模式,包括表示层、业务逻辑层和数据访问层。表示层负责用户交互,业务...

    Java利用spring aop进行监测方法执行耗时

    代码实现简单,易于维护:使用 Spring AOP 可以将耗时监测的逻辑与业务逻辑进行解耦,避免业务逻辑代码的冗余和代码维护难度的提高。 2. 安全性高:使用 Spring AOP 进行方法耗时监测,可以在不修改业务逻辑代码的...

    使用Spring配置文件实现AOP

    在Spring框架中,面向切面编程(Aspect Oriented Programming,简称AOP)是一种强大的设计模式,它允许我们定义横切关注点,如日志、事务管理、权限检查等,然后将这些关注点与核心业务逻辑解耦。这篇教程将详细讲解...

    spring-aop-jar

    Spring AOP模块提供了实现AOP规范的功能,它允许开发者定义“切面”来封装系统中的横切关注点,如日志、事务管理等。该jar文件包含了Spring AOP的核心类和接口,如`org.springframework.aop.*`包下的`...

Global site tag (gtag.js) - Google Analytics