Spring AOP使用@AspectJ实现日志管理

项目要加一个日志记录功能,需要对一些敏感信息进行一个日志记录,以前做过登陆的日志记录,做法很简单,就是在登陆方法后头加上日志的数据库插入,这样做一处还好,现在需要跟多操作都加上日志记录,如果每个地方都加上日志的数据库日志插入,即繁琐,代码的重复度也很大。Spring AOP的面向切入编程很好的解决了这个问题,通过在切入点(方法前,方法后,方法异常)植入通知(日志记录,事务管理...),这样就可以很灵活方便的在一些方法上加上一些跟业务逻辑无关的操作,可见AOP是对OOP的一个很好的补充。
下面就直接说说日记功能的实现步骤:

1.配置applicationContext-mvc.xml

加上这样的配置
    <mvc:annotation-driven />
     <!-- 激活组件扫描功能,在包cn.edu.pzxx.scampus及其子包下面自动扫描通过注解配置的组件-->
     <context:component-scan base-package="cn.edu.pzxx.scampus" />
     <!-- 启动对@AspectJ注解的支持 --> 
     <!-- proxy-target-class等于true是强制使用cglib代理,proxy-target-class默认是false,如果你的类实现了接口 就走JDK代理,如果没有,走cglib代理  -->
     <!-- 注:对于单利模式建议使用cglib代理,虽然JDK动态代理比cglib代理速度快,但性能不如cglib -->
     <aop:aspectj-autoproxy proxy-target-class="true"/>

2.创建日志实体

package cn.edu.pzxx.scampus.sys.entity;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;

import cn.edu.pzxx.scampus.core.base.BaseEntity;
@Entity
@Table(name="sys_log")
public class Log extends BaseEntity{
   
     /**
      * @Fields serialVersionUID : TODO
      */
    private static final long serialVersionUID = 1L;

    /**
     * 描述
     */
    @Column(length = 255)
    private String description;

    /**
     * 方法名
     */
    @Column(length = 255)
    private String method;

    /**
     * 日志类型
     */
    @Column
    private String logType;

    /**
     * 请求ip
     */
    @Column(length = 64)
    private String requestIp;

    /**
     * 异常代码
     */
    @Column(length = 64)
    private String exceptioncode;

    /**
     * 异常详细
     */
    @Column(length = 255)
    private String exceptionDetail;

    /**
     * 参数
     */
    @Column(length = 64)
    private String params;

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description == null ? null : description.trim();
    }

    public String getMethod() {
        return method;
    }

    public void setMethod(String method) {
        this.method = method == null ? null : method.trim();
    }



    public String getLogType() {
        return logType;
    }

    public void setLogType(String logType) {
        this.logType = logType;
    }

    public String getRequestIp() {
        return requestIp;
    }

    public void setRequestIp(String requestIp) {
        this.requestIp = requestIp == null ? null : requestIp.trim();
    }

    public String getExceptioncode() {
        return exceptioncode;
    }

    public void setExceptioncode(String exceptioncode) {
        this.exceptioncode = exceptioncode == null ? null : exceptioncode.trim();
    }

    public String getExceptionDetail() {
        return exceptionDetail;
    }

    public void setExceptionDetail(String exceptionDetail) {
        this.exceptionDetail = exceptionDetail == null ? null : exceptionDetail.trim();
    }

    public String getParams() {
        return params;
    }

    public void setParams(String params) {
        this.params = params == null ? null : params.trim();
    }

}

3.日志的dao,service具体代码就不放出来,大致就是对日志实体的增删查

@Repository("logDao")
public class LogDao extends BaseDAO{
   
    /**
        这里省略日志实体增删代码
    */
}


public interface LogService extends BaseService{
   

    public PageModel<Log> listLog(PageModel<Log> pageModel);
}

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值