`
zhaoshijie
  • 浏览: 2262744 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

spring aop实现日志功能

 
阅读更多
关键字 :sping  aop实现日志功能


附件是sping  aop实现日志功能的完整的工程例子,

但是目前存在一个问题没有解决,就是直接用下面的方式加载配置文件可以拦截目标方法:

ClassPathXmlApplicationContext beanApp = new ClassPathXmlApplicationContext(
                "applicationContext.xml");



但是 作为web工程 在web.xml中加载   启动tomcat并且访问的时候拦截不到目标方法该问题已经解决 ......


spring AOP相关知识请看完:

Spring AOP部分使用JDK动态代理或者CGLIB来为目标对象创建代理。(建议尽量使用JDK的动态代理)

如果被代理的目标对象实现了至少一个接口,则会使用JDK动态代理。所有该目标类型实现的接口都将被代理。若该目标对象没有实现任何接口,则创建一个CGLIB代理。

如果你希望强制使用CGLIB代理,(例如:希望代理目标对象的所有方法,而不只是实现自接口的方法)那也可以。但是需要考虑以下问题:

无法通知(advise)Final 方法,因为他们不能被覆写。

你需要将CGLIB 2二进制发行包放在classpath下面,与之相较JDK本身就提供了动态代理

强制使用CGLIB代理需要将 <aop:config> 的 proxy-target-class 属性设为true:

<aop:config proxy-target-class="true">

...

</aop:config>
当需要使用CGLIB代理和@AspectJ自动代理支持,请按照如下的方式设置 <aop:aspectj-autoproxy> 的 proxy-target-class 属性:

<aop:aspectj-autoproxy proxy-target-class="true"/>











附件是完整的例子,可以直接测试运行Main.java

项目中使用时直接拷贝其中的LogIntercept类(该类直接是注解注解方式),只需要修改该类中的@Pointcut("execution(public * com.creatar.portal.service..*.*(..))")  包名称为你真实需要代理的包名即可,注意spring配置文件中一定要加上<aop:aspectj-autoproxy/>这句话  或强制代理类而不会接口加上<aop:aspectj-autoproxy proxy-target-class="true"/> 这句话



附件中的testWeblogic2项目是一个web项目,部署后直接打开http://localhost:8080/testWeblogic2/main.jsp然后点击   增加用户 提交后即可测试AOP代理日志功能(testWeblogic2还没有上传 在家中 ...)







关于代理类中获取request对象:

1、struts2 控制器:
@SuppressWarnings("unused")
private HttpServletRequest getStrutsRequest(){
    HttpServletRequest request = ServletActionContext.getRequest();
    return request;
     }
    
1、spring 控制器:
     @SuppressWarnings("unused")
private HttpServletRequest getSpringRequest(){
    HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
    return request;
     }
分享到:
评论

相关推荐

    spring aop实现日志功能 开发技术-其它

    Spring AOP(面向切面编程)是一种强大的工具,可以用来优雅地实现日志功能。下面我们将深入探讨如何使用Spring AOP来实现日志功能,以及这一技术的核心概念和应用场景。 首先,Spring AOP是Spring框架的一个核心...

    JAVA 中Spring aop 实现日志记载

    综上所述,Spring AOP提供了一种优雅的方式,让我们能够轻松地在不修改业务代码的情况下添加日志功能。通过理解并实践这个例子,开发者可以更好地掌握AOP在日志记载方面的应用,并将其运用到自己的项目中。

    spring aop 自定义注解保存操作日志到mysql数据库 源码

    4、想看spring aop 注解实现记录系统日志并入库等 二、能学到什么 1、收获可用源码 2、能够清楚的知道如何用spring aop实现自定义注解以及注解的逻辑实现 (需要知道原理的请看spring aop源码,此处不做赘述) 3、...

    spring aop 操作日志

    本资源用来展示如何使用 spring aop 进行日志记录,例子里面通过aop的配置,把产生的日志存放到当前项目的根目录下,而且对方法执行过程中的参数进行了记录,对于aop如何记录日志不清楚的同学可以看看。

    Spring AOP实现机制

    - 代理对象在调用实际方法前后,会插入相应的通知代码,从而实现AOP功能。 - **CGLIB代理**: - 如果目标对象没有实现任何接口,Spring会使用CGLIB库创建一个目标对象的子类,并在子类中插入通知代码。 - CGLIB...

    Spring AOP 日志管理 实例

    Spring AOP 日志管理 实例LoggingThrowsAdvice.java

    spring aop实现日志分析管理

    3. `Main`类:启动应用,调用`Service`类的方法以触发AOP日志记录。 4. `pom.xml`:Maven配置文件,引入了Spring AOP和日志框架的依赖。 5. `application.properties`或`application.yml`:配置文件,可能包含日志...

    Spring的AOP实现的日志功能案例.zip

    Spring的AOP实现的日志功能案例.zip Spring的AOP实现的日志功能案例.zip Spring的AOP实现的日志功能案例.zip Spring的AOP实现的日志功能案例.zip Spring的AOP实现的日志功能案例.zip Spring的AOP实现的日志功能案例....

    spring aop jar 包

    这个"spring aop jar 包"包含了实现这一功能所需的类和接口,使得开发者能够轻松地实现面向切面的编程。 在Spring AOP中,主要涉及以下几个核心概念: 1. **切面(Aspect)**:切面是关注点的模块化,比如日志记录...

    spring aop 切面添加日志

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

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

    Spring框架中的AOP模块使用了动态代理来实现AOP概念。Spring AOP允许开发者定义切面,并在这些切面中指定拦截的方法。Spring AOP支持不同的代理策略,包括JDK动态代理和CGLIB代理。如果被代理的类没有实现接口,...

    spring AOP 切面日志 分层打日志

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

    spring aop切面拦截指定类和方法实现流程日志跟踪

    ### Spring AOP 实现流程日志跟踪 #### 一、背景与目的 在现代软件开发过程中,为了确保系统的稳定性和可维护性,通常会引入非功能性的需求来增强应用程序的功能,比如日志记录、安全控制等。这些需求往往不是业务...

    基于springmvc实现文件上传下载 基于AOP的日志功能

    基于springmvc实现文件上传下载 基于AOP的日志功能基于springmvc实现文件上传下载 基于AOP的日志功能基于springmvc实现文件上传下载 基于AOP的日志功能基于springmvc实现文件上传下载 基于AOP的日志功能基于...

    Spring AOP 16道面试题及答案.docx

    Spring AOP代理是框架为实现切面功能创建的对象,它在运行时实现切面协议。Spring提供了两种代理方式:JDK动态代理和CGLIB代理。JDK代理适用于那些实现了接口的类,而CGLIB代理则适用于没有实现接口的类。 引介...

    Spring AOP的简单实现

    在这个场景中,我们将使用Spring AOP来实现一个日志记录的功能,以追踪系统中各个方法的调用情况,包括访问时间以及传递的参数。下面将详细阐述如何实现这一目标。 首先,我们需要了解AOP的基本概念。AOP的核心是切...

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

    在Spring Boot应用中,Spring AOP(面向切面编程)是一种强大的工具,它允许我们创建横切关注点,如日志记录、权限检查等,这些关注点可以被编织到应用程序的多个点上,而无需侵入核心业务逻辑。在本案例中,我们将...

Global site tag (gtag.js) - Google Analytics