zoukankan      html  css  js  c++  java
  • 利用SpringAOP 实现 日志输出

    目的:

      需要对一些事物的操作进行日志记录,如果在service内进行记录,大量的代码重复,并且维护比较麻烦。所以采用AOP的方式对service进行拦截。使用自定义注解的目的则是判断是否需要记录日志和传递额外的信息。

    方式:

      参考后面的参考博客

    1、首先新建自定义注解

      @interface 自定义注解:用来标记是否需要记录日志

      @Target 注解:用于描述注解的范围,比如需要注解在方法上,值为 METHOD,其他含义如下

          CONSTRUCTOR 描述构造器

          FILED 描述域

          LOCAL_VARIABLE 描述局部变量

          METHOD 描述方法

          PACKAGE 用户描述参数

          TYPE 用于描述类和接口

      @Retention :描述注解的生命周期,可取值:

          SOURCCE 在源文件中有效

          CLASS 在class 文件中有效

          RUNTIME 在运行时有效

      @Documented 在默认的情况下javadoc 命令不会将我们的注解生成载入到doc中,使用此,则告诉jdk让此注解生成到doc中去

      @Inherited 可继承的,比如子类继承父类的注解

    package com.bkc.logging.annotaion;
    
    import java.lang.annotation.Documented;
    import java.lang.annotation.ElementType;
    import java.lang.annotation.Inherited;
    import java.lang.annotation.Retention;
    import java.lang.annotation.RetentionPolicy;
    import java.lang.annotation.Target;
    
    @Target({ElementType.METHOD})
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @Inherited
    public @interface LogWrite
    {
        /**
         * @param模块名字
         */
        String modelName() default "";
        
        /**
         * @param操作类型
         */
        String option();
    }
    

      

    2、利用AOP 方式拦截

      配置AOP,这里采用注解方式

      使用通知,这里采用@Around 环绕通知,因为需要记录该方法是否被执行成功了

      实现@Around 方法中,记录日志:获取拦截的方法,判断该方法是否含有自定义注解,如果没有则不进行记录,否则,按照自己的方式进行记录。

    参考博客:Spring+SpringMVC+Mybatis 利用AOP自定义注解实现可配置日志快照记录

    http://www.cnblogs.com/shipengzhi/articles/2716004.html (利用spring Aop 自定义注解解决日志和签名校验)

  • 相关阅读:
    多模块javaweb项目构建tomcat部署
    html页面基于ajax按钮60秒倒计时
    java面向对象六原则一法则
    sessionStorage 和 localStorage 、cookie
    Is-A,Has-A,Use-A(转载)
    多例模式
    java变量类型
    单例模式
    How to modify a compiled Android application (.apk file)
    Unity3D 绘制扇形/环形
  • 原文地址:https://www.cnblogs.com/panie2015/p/5893549.html
Copyright © 2011-2022 走看看