0 0

AOP拦截框架设计7

当前由于业务需求,要求用户在系统里面进行任何操作的时候,都有日志记录。
现在系统都已经基本成型。

请问这个应该如何设计,把代码里面都加入相关日志记录吗,用AOP应该怎么实现?
2012年7月31日 13:21

7个答案 按时间排序 按投票排序

1 0

实际上这个要进行区分,存在两种情况:
1.请求的访问日志
2.方法级别的访问日志

如果是请求日志,通过简单的filter即可实现。或者线下分析access.LOG日志……
如果方法级别的访问日志,可通过动态代理(前提:实现接口)或者字节码工具(cglib、asm等),这个可参考spring aop来解决。

有时候也有数据级别的访问日志(执行了哪些SQL,分别执行了多久等等),这种日志也可通过字节码工具在jdbc的实现中注入统计信息来解决

2012年7月31日 15:21
0 0

可以用spring的AOP来做,springAOP有5种切面:
函数执行前通知,能获得函数输入参数,函数名、函数所属类;
函数执行后通知,能获得返回值,函数名、函数所属类;
抛出异常后通知,能获得异常信息,函数名、函数所属类;
函数执行前后通知(环绕通知),没用过。
这些信息足够记录日志信息。


带一个简单例子,spring配置网上一大把

@Pointcut("execution(* *.*(..))")
public void infoLogMethod() {
}



@Before("infoLogMethod()")
public void beforFunctionExce(JoinPoint jp) {
Logger logger = LoggerFactory.getLogger(jp.getTarget().getClass());
//获取执行函数的输入参数
Object[] objs = jp.getArgs();
//dosomething();
logger.debug(sb.toString());
}

2012年8月03日 16:12
0 0

亲,如果想采用代理模式,必须满足:
1.接口统一;(就像spring为save/updat/delete*方法事务控制一样,接口必须统一)
2.操作描述信息统一;(eg.XX操作了XX 结果XX,可以考虑注解操作信息)

如果这些东西在开始动工之前就考虑到了,那么用代理模式就so easy了!
反之和机械式的在每个方法中添加操作日志的工作量就差不多了~

2012年8月01日 17:47
0 0

log4j 就能解决。。配置下 。通过log4j 数据库sql 就可以解决

2012年8月01日 13:33
0 0

aspectj
定义pointcut,
定义advice
实施拦截!!!!!!!!!!

2012年8月01日 13:03
0 0

这种需求在涉及到资金的系统里面非常常见。简单的自动处理办法是不能满足要求的,也容易出现误记录和重复记录,手动解决的办法是最可靠的。

在数据库里面建好表,定义好操作类型、操作对象、操作者、操作时间等需要的字段,再写一个公用的方法插入全系统日志记录。然后按照功能模块插入日志的代码,没什么技术含量,就是个体力活,但事务要单独处理,因为不管功能模块是否执行成功,日志都要成功插入数据库,这样才有意义。

原始日志数据都进了数据库,就可以考虑开发日志分析的模块了。

2012年7月31日 20:30
0 0

用JDK动态代理吧,你那些操作业务类应该都实现了接口的,没实现接口的话用cglib,代码不用改,不过spring的配置文件得改动

2012年7月31日 15:08

相关推荐

    spring AOP拦截方法小示例

    这个“spring AOP拦截方法小示例”是一个实际应用,展示了如何使用Spring AOP来拦截特定层的所有方法,并在调用前后以及出现异常时执行自定义逻辑。 首先,让我们了解AOP的基本概念。AOP的核心是切面(Aspect),它...

    动态方法拦截(AOP)的N种解决方案.docx

    动态方法拦截(AOP,Aspect-Oriented Programming)是一种编程范式,旨在通过将关注点分离到称为切面的独立模块来简化程序设计。AOP的核心是拦截,它允许开发者在不修改原有代码的情况下,在方法执行前后插入额外的...

    详解Spring AOP 拦截器的基本实现

    具体到Spring AOP拦截器的代码实现,本文通过创建TestInterceptor类来演示。这个类继承自HandlerInterceptorAdapter,然后重写其中的afterCompletion、postHandle等方法。在这个类中,可以在相应方法中添加自定义的...

    spring aop 拦截日志示例

    通过以上步骤,我们就完成了使用Spring AOP拦截并记录系统操作日志和异常日志的过程。在实际项目中,可以根据需求调整切点表达式,优化日志格式,以及对日志进行分类和分级存储。这样的设计使得日志管理变得灵活且...

    轻量级的.NET对象查找服务和AOP开发框架测试源码

    本项目名为“轻量级的.NET对象查找服务和AOP开发框架测试源码”,主要关注的是Netop框架,它是一个专为.NET平台设计的IOC(Inversion of Control,控制反转)和AOP容器。让我们深入探讨这些关键概念以及Netop框架...

    C# 实现的AOP框架

    AOP(Aspect-Oriented Programming,面向切面编程)是一种编程范式,...然而,设计一个全面的AOP框架需要对.NET Framework有深入的理解,并考虑如何优雅地处理切面的顺序、优先级以及与其他编程模型的兼容性等问题。

    java aop拦截方法类前后添加日志

    在Java开发中,AOP(面向切面编程)是一种强大的设计模式,它允许程序员将关注点从业务逻辑中分离出来,比如日志记录、事务管理、性能监控等。本话题聚焦于如何使用Java AOP来在方法执行前后插入日志记录,这有助于...

    Android-框架知识整理之AndroidAOP编程思想

    在Android开发中,AOP(Aspect Oriented Programming,面向切面编程)是一种强大的设计模式,它允许开发者将关注点从核心业务逻辑中分离出来。在本篇内容中,我们将深入探讨Android AOP的概念、实现方式以及它在实际...

    (入门)什么是AOP?什么是代理模式?怎么设计日志拦截器?

    在Spring框架中,我们可以利用AOP和代理模式来创建日志拦截器,从而实现对程序执行过程的记录。拦截器会在方法调用前后执行特定操作,例如在方法执行前记录开始时间,在方法执行后记录结束时间和执行结果,以及可能...

    C#实现的IOC和AOP框架,供学习

    学习这个框架,开发者可以深入理解IOC和AOP的概念,掌握如何在C#中实现和使用这两种模式,提升自己的编程技巧和软件设计能力。同时,了解和使用开源框架,也有助于扩展视野,了解业界最佳实践。

    Android-Jet-AOP一个AndroidAOP框架

    Android-Jet-AOP便是一个专为Android平台设计的AOP框架,它借助注解和AspectJ技术,使得在Android应用中实现AOP变得简单易行。 ### 一、面向切面编程(AOP) AOP的核心理念是将程序中的关注点分离,关注点可以理解...

    aopalliance-1.0.jar及aopalliance源码

    AOP Alliance的核心在于它的简单性,它仅定义了一些基本的接口,如`org.aopalliance.intercept.MethodInterceptor`和`org.aopalliance.intercept.MethodInvocation`,这些接口是大多数AOP框架共有的基础。...

    aop框架教程文件

    **AOP(面向切面编程)框架教程** AOP,全称为Aspect-Oriented Programming,是一种编程范式,旨在减少代码的重复性,提高代码的模块化...在实际项目中,结合具体需求,灵活运用AOP框架,可以显著提升软件设计的质量。

    基于Bytebuddy的Java Agent AOP框架.zip

    ByteBuddy的API设计更加直观,对于大部分开发者来说,使用ByteBuddy创建代理和AOP框架会更加便捷。 5. **应用场景**: 利用ByteBuddy和Java Agent构建的AOP框架可以广泛应用于日志记录、性能监控、权限控制、事务...

    利用C#实现AOP常见的几种方法详解

    面向切面编程(AOP,Aspect Oriented Programming)是一种编程范式,旨在通过将关注点分离,使得系统设计更加模块化。AOP的核心思想是将应用程序的横切关注点(如日志、事务管理、安全检查等)从核心业务逻辑中解耦...

    拦截器+ognl+aop

    拦截器是一种设计模式,常用于框架中,如Spring MVC或Struts2,它允许在业务逻辑执行前后插入自定义的行为。拦截器可以理解为一种过滤机制,它可以在请求到达目标方法之前或之后执行特定的操作,例如日志记录、性能...

    aopalliance-1.0

    AOP Alliance 1.0 的这些接口和概念被广泛应用于各种AOP框架中,使得开发者可以跨框架地复用和组合拦截器,提高了代码的可移植性和可维护性。在实际开发中,比如在Spring框架中,我们可以通过实现这些接口来定义...

    基于js的简易aop框架

    【标题】:“基于js的简易AOP框架” 在JavaScript中,面向切面编程(Aspect-Oriented Programming,简称AOP)是一种设计模式,它旨在提高代码的可复用性和可维护性,通过分离关注点来组织代码。AOP允许开发者定义...

    aopalliance-1.0.rar

    通过实现这个接口,开发者可以创建自己的拦截逻辑,并与任何支持AOP Alliance的框架无缝集成。 2. `Advice`: 顾名思义,这个接口代表了一条“建议”,即在程序执行的特定点上应用的增强代码。Advice可以是前置通知...

    以注解方式模拟Spring IoC AOP

    在Spring框架中,依赖注入(Inversion of Control, IoC)和面向切面编程(Aspect Oriented Programming, AOP)是两大核心特性。本篇将深入探讨如何通过注解方式来模拟Spring的这两种机制,帮助你理解其底层原理。 #...

Global site tag (gtag.js) - Google Analytics