`

xml方式---spring的AOP拦截用户操作

 
阅读更多

需要日志记录,将所有的web操作记录到数据库中,使用aop来记录日志,当然是一个好的选择,spring中集成aop记录日志的方式有多种(aop的配置方式有多种,注解、xml配置),这里只说一个xml配置的例子。

   1、编写日志记录类
   2、配置aop

   1、编写日志记录类

 

@SuppressWarnings("unchecked")  
public class LogService {      
   public void logAll(JoinPoint jp){      
  System.out.println("in LogService, method logAll invoked.");      
 System.out.println("========================");     
     StringBuilder sb = new StringBuilder();      
   sb.append("method:" + jp.getSignature().getName());        
 HttpServletRequest request = ServletActionContext.getRequest();  
        Iterator<Entry<String, Object>> iter = request.getParameterMap().entrySet().iterator();      
    boolean isFirst = true;     
     sb.append(" paras:");    
      while(iter.hasNext()){      
        Entry<String, Object> entry = iter.next();    
          if(isFirst){       
           isFirst = false;       
       }else{           
       sb.append("#");    
          }             
 sb.append(entry.getKey() + "=");    
          Object[] allValue = (Object[]) entry.getValue();        
      for(int i = 0; i < allValue.length; i++){         
         if(i != 0){      
                sb.append(",");      
            }             
     sb.append(allValue[i].toString());        
      }      
    }         
           System.out.println(sb.toString());      
    System.out.println("========================");    
  }
  }        

 

 

 2、配置aop
   在applicationContext.xml中配置

<aop:config>
<aop:aspect id="myAspect" ref="logService">
<aop:pointcut expression="execution(* com.cjnetwork.cms.action.*.*(..))" id="logPointCut"/>
<aop:before method="logAll" pointcut-ref="logPointCut"/>
</aop:aspect>
</aop:config>
<bean id="logService" class="com.cjnetwork.cms.service.LogService"></bean>
<aop:config proxy-target-class="true" />  

 


基本配置就是这样的,这里需要配置<aop:config proxy-target-class="true" /> ,表示强制使用cglib代理,而不是java本身的代理,这个很重要,如果使用java自带的代理,则会抛出异常,提示说代理类无法转换为我们自己的类,这是因为默认的该属性为false,这种代理方式,需要实现接口的方式,代理返回的类可以转换为对应的接口类,但无法直接转换为类的实现,这种方式不推荐。

分享到:
评论

相关推荐

    spring-aop-jar

    在Spring AOP中,切面可以通过注解或XML配置来定义。 - 连接点(Join Point):连接点是程序执行过程中的一个特定点,例如方法的调用或字段的访问。 - 切入点(Pointcut):切入点是连接点的集合,定义了切面将在...

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

    本节将详细介绍如何使用Spring AOP实现流程日志跟踪,主要关注于如何通过AOP拦截特定的类和方法来进行日志记录。 ##### 3.1 配置Spring AOP 在Spring配置文件中定义切面和切入点表达式是非常关键的一步。一般来说...

    springaop拦截controller日志

    "springaop拦截controller日志"这个主题旨在讲解如何使用Spring AOP来拦截Controller层的方法调用,并在方法执行前后记录相关日志。 首先,了解Spring AOP的基本概念。AOP是一种编程范式,它允许程序员定义“切面”...

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

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

    Spring AOP 拦截器 Advisor

    Spring AOP 拦截器 Advisor 是 Spring 框架中的一个重要概念,它与切面编程密切相关,用于实现细粒度的控制和增强应用程序的行为。在 Spring AOP 中,Advisor 是一个组合了通知(Advice)和切入点(Pointcut)的对象...

    spring AOP拦截方法小示例

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

    spring aop xml 实例

    Spring AOP主要通过两种方式实现:XML配置和注解。本实例主要探讨的是使用XML配置的方式来实现AOP。XML配置虽然相比注解方式略显繁琐,但它提供了更大的灵活性,尤其是在需要对多个类或方法应用相同通知(Advice)时...

    mybatis 拦截器 + spring aop切面 + spring事务+ 反射工具类

    例如,可能会有一个自定义的MyBatis拦截器用于分页查询,一个Spring AOP切面用于记录操作日志,Spring事务管理确保数据的一致性,而反射工具类可能用于动态加载配置或处理某些通用的反射任务。通过这些组件的组合,...

    Spring--3.Spring AOP-2

    在Spring AOP中,有两种主要的实现方式:基于接口的JDK动态代理和基于类的CGLIB代理。JDK代理适用于目标对象实现了接口的情况,而CGLIB则在目标对象没有接口时提供代理功能。 使用Spring AOP的步骤通常包括: 1. ...

    Spring学习笔记(14)----使用CGLIB实现AOP功能

    CGLIB在Spring AOP中的作用是动态生成目标类的子类,然后在这个子类中拦截方法调用,插入切面代码。当Spring创建一个使用CGLIB代理的对象时,它会创建目标类的一个子类,并在子类的方法上添加拦截器。当调用这个代理...

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

    在Spring MVC框架中,AOP(面向切面编程)是一种强大的工具,用于实现跨切面的关注点,如日志管理。本教程将详细介绍如何利用注解来配置和使用AOP来拦截Controller层的方法,以便记录执行过程中的相关信息,实现日志...

    spring-cglib-repack-3.2.0.jar和spring-objenesis-repack-2.1.jar

    在Java开发中,Spring框架是不可或缺的一部分,它提供了一种模块化、可扩展的方式来构建应用程序。在使用Spring框架时,有时会遇到导入源码或运行项目时出现类找不到的错误,这通常是因为缺少了必要的依赖库。在这个...

    Spring Aop四个依赖的Jar包

    Spring AOP,全称Aspect-Oriented Programming(面向切面编程),是Spring框架的一个重要模块,它通过提供声明式的方式来实现面向切面编程,从而简化了应用程序的开发和维护。在Spring AOP中,我们无需深入到每个...

    Spring--3.Spring AOP-1

    6. **代理(Proxy)**:Spring AOP通过创建代理对象来实现对目标对象的拦截,代理对象在调用真实对象的方法时会插入切面逻辑。 7. **目标对象(Target Object)**:被AOP代理的对象,即我们真正想要操作的对象。 ...

    ssh2登陆+spring aop做拦截

    SSH2 登录与 Spring AOP 拦截是两种在 IT 领域中常见的技术,主要用于提升系统安全性和管理效率。SSH2(Secure Shell version 2)是一种网络协议,用于提供安全的远程登录和数据传输,而 Spring AOP(Aspect ...

    spring-boot 自定义xml配置web请求拦截器

    标题中的"spring-boot 自定义xml配置web请求拦截器"指的是在Spring Boot项目中,通过XML配置方式实现对Web请求的拦截处理。这涉及到Spring Boot的Web层架构、AOP(面向切面编程)以及自定义拦截器的概念。Spring ...

    spring-aop.rar_java aop

    Spring AOP提供了两种实现方式:基于代理(Proxy-based AOP)和基于注解(Annotation-based AOP)。 1. **基于代理的AOP**:Spring默认使用JDK动态代理或CGLIB代理来创建目标对象的代理。JDK动态代理适用于实现了...

    spring-aop实例

    7. **配置方式**:Spring AOP可以通过XML配置、注解或者自定义的Aspect类来实现。注解驱动的AOP更简洁,而自定义Aspect类提供了更大的灵活性。 8. **织入(Weaving)**:织入是将切面应用到目标对象以创建代理对象...

    草稿:SSM整合-用springaop-demo01实现了注解AOP,SSM-MybatisOneForOne-demo01实现

    我们将详细探讨在"springaop-demo01"中实现的注解AOP以及"SSM-MybatisOneForOne-demo01"中的MyBatis一对一映射。 首先,让我们深入了解一下注解AOP在"springaop-demo01"中的应用。AOP(面向切面编程)是Spring框架...

    spring aop用到jar包.rar

    Spring AOP(面向切面编程)是Spring框架的重要组成部分,它提供了一种模块化和声明式的方式来处理系统中的交叉关注点,如日志、事务管理、性能监控等。在使用Spring AOP时,通常需要引入特定的jar包来支持其功能。...

Global site tag (gtag.js) - Google Analytics