利用SpringAOP 实现 日志输出
2016-09-21 17:37
387 查看
目的:
需要对一些事物的操作进行日志记录,如果在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 可继承的,比如子类继承父类的注解
2、利用AOP 方式拦截
配置AOP,这里采用注解方式
使用通知,这里采用@Around 环绕通知,因为需要记录该方法是否被执行成功了
实现@Around 方法中,记录日志:获取拦截的方法,判断该方法是否含有自定义注解,如果没有则不进行记录,否则,按照自己的方式进行记录。
参考博客:Spring+SpringMVC+Mybatis 利用AOP自定义注解实现可配置日志快照记录
http://www.cnblogs.com/shipengzhi/articles/2716004.html (利用spring Aop 自定义注解解决日志和签名校验)
需要对一些事物的操作进行日志记录,如果在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 自定义注解解决日志和签名校验)
相关文章推荐
- 利用spring AOP实现每个请求的日志输出
- 利用spring AOP实现每个请求的日志输出
- SpringMVC 利用spring AOP实现每个请求的日志输出
- 利用spring AOP实现每个请求的日志输出
- 17、Spring实战:利用AOP实现日志监控
- Spring+SpringMVC+Mybatis 利用AOP自定义注解实现可配置日志快照记录
- Spring+SpringMVC+Mybatis 利用AOP自定义注解实现可配置日志快照记录
- Spring+SpringMVC+Mybatis 利用AOP自定义注解实现可配置日志快照记录
- 不使用spring的aop功能实现日志输出
- 利用Spring AOP实现业务和异常日志记录
- Spring AOP实现日志输出时的引入包错误
- spring 基于aop 实现日志输出 定义在controller层无效
- 利用spring AOP注解实现日志管理
- Spring系列之 (十六):利用Spring AOP和自定义注解实现日志功能
- SpringAOP实现拦截Controller请求参数并输出到日志
- 利用Spring AOP和自定义注解实现日志功能
- spring的AOP实现日志输出
- 5.8 把输出日志的实例改成用Spring的AOP来实现
- 采用Spring AOP实现日志记录
- Spring+SpringMVC+Mybatis 利用AOP自定义注解实现可配置日