文档章节

在springmvc中使用系统日志,记录service服务层的详细功能调用

wf王帆
 wf王帆
发布于 2016/07/28 22:22
字数 457
阅读 289
收藏 0

思路:

  aop :利用aop的横切面的思路,在每个service中的方法执行之后,执行一个日志存储的功能.

具体步骤:

  1.先定义一个日志模型,定义需要存储哪些日志操作信息.

  2.编写mapper接口,定义日志的CRUD或其他的功能

  3.配置mapper映射文件的各种sql查询以及查询结果中的列与对象属性的对应,完成对象与数据库的映射.

  4.编写service服务层代码,封装mapper(Dao)的功能.

  5.编写LogUtil类,,定义WriteLog(JoinPoint jp)方法,JoinPoint jp为spring在这个方法调用时为我们传递,即连接点.

      [注:

      切面包括以下部分:
      * 切入点 (在哪里做事情)
      * 通知 (增强)
      * 连接点 (切入时的上下文信息)

      ]

   接下来,就在该方法内获取当前执行的方法的各种信息,并封装到我们的日志模型中,并持久化到数据库中.

具体代码:

复制代码

package com.tab.crm.utils;

import java.util.Date;

import org.aspectj.lang.JoinPoint;

import com.tab.crm.domain.SystemLog;
import com.tab.crm.service.ISystemLogService;

public class SystemLogUtils {
    // 注入日志的services
    private ISystemLogService service;

    public void setService(ISystemLogService service) {
        this.service = service;
    }

    // 日志写入方法
    @SuppressWarnings("rawtypes")
    public void writeLog(JoinPoint jp) {
        // 获取当前方法所在的对象
        Object targetObj = jp.getTarget();
        // 如果进入了log的service中则退出该方法,解决死循环
        if (targetObj instanceof ISystemLogService) {
            return;
        }

        // System.out.println(jp.getClass());
        // System.out.println(jp.getKind());
        // System.out.println(jp.getThis());
        SystemLog log = new SystemLog();
        //使用封装了自定义的ActionContext的UserContext获取当前session中的user对象
        log.setOpUser(UserContext.getUser());
        //使用封装了自定义的ActionContext的UserContext获取当前request中的ip地址
        log.setOpIp(UserContext.getOpIp());
        log.setOpTime(new Date());
        // 获取当前的正在执行的service类
        Class serviceClz = jp.getTarget().getClass();
        // 获取当前的正在执行的方法名
        String methodName = jp.getSignature().getName();
        log.setFunction(serviceClz.getName() + "." + methodName);
        service.save(log);
    }
}

本文转载自:http://www.cnblogs.com/tabchanj/p/5715979.html

wf王帆
粉丝 6
博文 64
码字总数 9386
作品 0
西安
私信 提问
maven+springMVC+mybatis+junit详细搭建过程

首先我们先要弄清搭建项目的一般流程,需要注意哪些方面,想要什么样的效果,自己的功能有哪些? (假设效果:项目目录结构清晰,能够查询到本地数据库中的内容。。) 1. 工程目录结构整理清...

梵蒂冈考虑过
2016/08/16
68
1
stylefeng-Roses/roses-kernel

roses-kernel 项目骨架,开发利器 介绍 本项目为Roses系列微服务框架的模块之一,Roses基于和,致力做更简洁的分布式和服务化解决方案,Roses拥有高效率的开发体验,提供可靠消息最终一致性分...

stylefeng-Roses
2018/09/16
0
0
maven+springMVC+mybatis+junit详细搭建过程

springMVC+mybatis框架搭建 在上一遍博客中以及讲诉了新建maven项目的流程,现在紧跟上一遍文章,接着搭建spring项目 首先我们先要弄清搭建项目的一般流程,需要注意哪些方面,想要什么样的效...

卐字旗下的余晖
2014/02/12
0
61
JeeSpringCloud互联网云开发平台

JeeSpringCloud 帮忙标星、点赞,申请码云最有价值开源项 演示版地址:http://yocity.imwork.net:10858/admin?login 官网地址:https://jeespring.icoc.bz/ 论坛社区:https://jeespring.kf5...

suncos
2018/08/29
0
0
请教关于Spring事务的问题

我们代码中使用Hibernate做ORM,使用Spring切面控制业务逻辑层的事务,代码如下:具体业务逻辑实现类XXXXServiceImpl上使用@Service标注为服务,使用 @Transactional标注为使用Spring的事务控...

liuex
2012/02/24
613
7

没有更多内容

加载失败,请刷新页面

加载更多

基础工具类

package com.atguigu.util;import java.sql.Connection;import java.sql.SQLException;import java.util.Properties;import javax.sql.DataSource;import com.alibaba.druid......

architect刘源源
今天
42
0
P30 Pro劲敌!DxO官宣新机:排行榜又要变

5月26日晚间,DxOMark官方推特预告,将在5月27日公布一款新机型的DxOMark评分,猜猜是哪款? 网友猜想的机型有:红米K20、谷歌Pixel 3a、索尼Xperia 1、诺基亚9 PureView等。 DxOMark即将公布...

linux-tao
昨天
15
0
Ubuntu18.04.2窗口过小不能自适应(二次转载)

解决Ubuntu在虚拟机窗口不能自适应 2018年09月06日 16:20:08 起不了名儿 阅读数 855 此博文转载:https://blog.csdn.net/nuddlle/article/details/77994080(原地址) 试了很多办法这个好用 ...

tahiti_aa
昨天
2
0
死磕 java同步系列之CountDownLatch源码解析

问题 (1)CountDownLatch是什么? (2)CountDownLatch具有哪些特性? (3)CountDownLatch通常运用在什么场景中? (4)CountDownLatch的初始次数是否可以调整? 简介 CountDownLatch,可以...

彤哥读源码
昨天
6
0
Nginx提供下载apk服务

有时候我们可能需要提供文件或者其他apk下载链接,通过 nginx 配置可以很简单地实现。 server {    listen 80;    server_name download.xxx.com;    root app;    locati...

Jack088
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部