文章来至于http://www.thinksaas.cn/group/topic/341436/

第一:>>在spring的配置文件里增加以下配置

<!-- 支持 @AspectJ 标记-->
  <aop:aspectj-autoproxy />

如果发现插入后,eclipse提示这行有错误,那可能是你的spring配置有问题,你对照一下我的spring里的beans的头:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:aop="http://www.springframework.org/schema/aop"
  xmlns:tx="http://www.springframework.org/schema/tx"
  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd"
  default-autowire="byName" default-lazy-init="true">

第二:>>配置一下@AspectJ 的bean,这个Bean就是一个普通的java对象bean,按照普通的bean来配置就行了,我的这个处理切面的bean配置如下 (包含了第一步的配置):

<!-- 支持 @AspectJ 标记-->
  <aop:aspectj-autoproxy />
  <bean id="logAspect" class="com.hs.dolphin.sys.LogAspect">
    <!-- 配置要记录日志的对象及属性(要监控的方法的第一个参数) 格式: 对象类名(带路径全称).属性GET方法名 -->
    <property name="obj_method">
      <map>
        <entry key="default">
          <map><!-- 默认值,如果没有指定对象就执行这个 -->
            <entry key="getId"><!-- 属性的get方法名字 -->
              <value>id</value><!-- 属性名字 -->
            </entry>
          </map>
        </entry>
        <entry key="com.hs.dolphin.domain.User">
          <map>
            <entry key="getId"><!-- 属性的get方法名字 -->
              <value>id</value><!-- 属性名字 -->
            </entry>
            <entry key="getUserName"><!-- 属性的get方法名字 -->
              <value>userName</value><!-- 属性名字 -->
            </entry>
          </map>
        </entry>
      </map>
    </property>
  </bean>

第三:>>在这个切点处理bean类里,在class定义的上一行加上切面定义标签,如下:

@Aspect
// 切面定义标签
public class LogAspect {
  private UserSession sessionValue;// 当前操作员基本信息
  private String userIpAddress;// 当前操作员IP地址

第四:>>定义切点及处理方法

@Pointcut("execution(* *.*.*.service..*.insert*(..)) || execution(* *.*.*.service..*.update*(..)) "
    + "|| execution(* *.*.*.service..*.remove*(..))"
    + "|| execution(* *.*.*.service..*.delete*(..))")
  public void insertPointcut() {
  }

 第五:>>Advice扩展处理

@AfterReturning("insertPointcut()")
  public void insertLogInfo(JoinPoint joinPoint)
    throws Exception{
     /*处理代码,略*/    
   }

 好了,完成了,是不是很容易.在第五步的这个方法里有一个参数,这个参数也许就是切 面自己传进来的,所以你就这样写吧,JoinPoint 对象里可以获取切面切点的相关信息,如方法名,参数,类路径,类名等等,这样我们就可以来记录操作者进行的操作的详细信息,比如执行的方法名,其所在的对 象类名,操作方法里带的所有参数信息,等,再加上自己另外获取一些信息,比如,当前操作时间,操作用户,还可以根据以上信息来定义操作类别等等

aop实现日志(转)的更多相关文章

  1. Spring AOP 完成日志记录

    Spring AOP 完成日志记录 http://hotstrong.iteye.com/blog/1330046

  2. Spring AOP进行日志记录

    在java开发中日志的管理有很多种.我一般会使用过滤器,或者是Spring的拦截器进行日志的处理.如果是用过滤器比较简单,只要对所有的.do提交进行拦截,然后获取action的提交路径就可以获取对每个 ...

  3. [置顶] 使用sping AOP 操作日志管理

    记录后台操作人员的登陆.退出.进入了哪个界面.增加.删除.修改等操作 在数据库中建立一张SYSLOG表,使用Sping 的AOP实现日志管理,在Sping.xml中配置 <!-- Spring ...

  4. Spring AOP进行日志记录,管理

    在java开发中日志的管理有很多种.我一般会使用过滤器,或者是Spring的拦截器进行日志的处理.如果是用过滤器比较简单,只要对所有的.do提交进行拦截,然后获取action的提交路径就可以获取对每个 ...

  5. Spring Boot 入门(五):集成 AOP 进行日志管理

    本篇文章是接着 Spring boot 入门(四):集成 Shiro 实现登陆认证和权限管理写的,按照前面几篇博客的教程,可以搭建一个简单的项目,主要包含了 Pagehelper+MyBatis 分页 ...

  6. spring aop实现日志收集

    概述 使用spring aop 来实现日志的统一收集功能 详细 代码下载:http://www.demodashi.com/demo/10185.html 使用spring aop 来实现日志的统一收 ...

  7. 自定义注解-aop实现日志记录

    关于注解,平时接触的可不少,像是 @Controller.@Service.@Autowried 等等,不知道你是否有过这种疑惑,使用 @Service 注解的类成为我们的业务类,使用 @Contro ...

  8. AOP拦截日志类,抛异常:java.lang.IllegalStateException: It is illegal to call this method if the current request is not in asynchronous mode

    AOP的日志拦截类中,抛出异常: java.lang.IllegalStateException: It is illegal to call this method if the current r ...

  9. 【Java分享客栈】超简洁SpringBoot使用AOP统一日志管理-纯干货干到便秘

    前言 请问今天您便秘了吗?程序员坐久了真的会便秘哦,如果偶然点进了这篇小干货,就麻烦您喝杯水然后去趟厕所一边用左手托起对准嘘嘘,一边用右手滑动手机看完本篇吧. 实现 本篇AOP统一日志管理写法来源于国 ...

  10. 【Java EE 学习 77 上】【数据采集系统第九天】【通过AOP实现日志管理】【通过Spring石英调度动态生成日志表】【日志分表和查询】

    一.需求分析 日志数据在很多行业中都是非常敏感的数据,它们不能删除只能保存和查看,这样日志表就会越来越大,我们不可能永远让它无限制的增长下去,必须采取一种手段将数据分散开来.假设现在整个数据库需要保存 ...

随机推荐

  1. phpwind9.0模板制作教程——制作论坛风格

    由于论坛模板机制和门户等模板机制不同,所以今天我就先重点讲讲论坛模板制作的大概过程. 一.先来熟悉下phpwind9.0的论坛模板机制. 其实phpwind9.0的模板机制和discuzx2.5差不多 ...

  2. 简进祥==iOS 3DES加密解密

    3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称.它相当于是对每个数据块应用三次DES加密算法.由于计 ...

  3. ubuntu优化使用

    1.开机程序设置 1.系统自带 Dash菜单中搜索gnome-session 2.安装扩展包 kamil@kamil-ThinkPad-X260:~$ sudo apt-get install rcc ...

  4. 【BZOJ-3572】世界树 虚树 + 树形DP

    3572: [Hnoi2014]世界树 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 1084  Solved: 611[Submit][Status ...

  5. java 基础拾漏

    1.java语言支持的类型非为两类:基础类型(primitive Type) 和引用类型(Reference Type),基础类型8种 2.数组元素的类型是基本类型中的整数类型(byte,short, ...

  6. 【codevs3945】 完美拓印

    http://codevs.cn/problem/3945/ (题目链接) 题意 给出一个诡异的图形,再给出一个歪七扭八的线,问图形上下两条边与线的匹配→_→ Solution 前后求差然后KMP,这 ...

  7. C++开发的数据库连接查询修改小工具

    项目相关地址 源码:https://github.com/easonjim/SQL_Table_Tool bug提交:https://github.com/easonjim/SQL_Table_Too ...

  8. hdu5124 线段树+离散化

    题意:令a[l..r]都+1,求a[1..n]的最大值 裸的成段更新+区间最值,但是本题坐标范围很大(10^9),所以需要离散化 顺便离散化模板get 离散化的基本思路: 设一共有m个数,范围1--n ...

  9. 用批处理批量编译多个解决方案(.sln)

    批处理编译解决方案(.sln) @echo off path %SYSTEMROOT%\Microsoft.NET\Framework64\v4.0.30319\ echo 正在生成HelloWorl ...

  10. [JavaEE]Get请求URI中带的中文参数在服务端乱码问题的解决方法

    在Get请求中,如果请求参数中带有中文,如 http://localhost:8080/DinnerParty/shop/search?query=多伦多, 在服务端拿到的是乱码. 这是因为客户端提交 ...