赞
踩
最近接手一个任务,需要给当前项目加一个较为复杂的日志。有多复杂呢?
要有日志类型、不同日志类型要有不同的操作和备注等。作为小白的我
最开始的做法是在业务层写代码记录日志,好处
就是方便,坏处
就是这种做法直接侵袭Service层,Service层无法做到职责单一了
。
经导师点拨,改用自定义注解+AOP切面异步日志
注解(Annotation),也叫元数据。
注解其实就是代码里的特殊标记
,这些标记可以在编译、类加载、运行时被读取,并执行相应的处理。通过使用注解,程序员可以在不改变原有逻辑的情况下,在源文件中嵌入一些补充信息
。
元注解用于修饰其他注解的注解,在JDK5.0中提供了四种元注解:Retention、Target、Documented、Inherited
(1) Retention介绍
: 用于修饰注解,用于指定修饰的哪个注解的声明周期。@Rentention包含一个RetentionPolicy枚举类型的成员变量,使用@Rentention时必须为该value成员变量指定值
RetentionPolicy.SOURCE:在源文件中有效(即源文件保留),编译器直接丢弃这种策略的注释,在.class文件中不会保留注解信息
RetentionPolicy.CLASS:在class文件中有效(即class保留),保留在.class文件中,但是当运行java程序时,他就不会继续加载了,不会保留在内存中,JVM不会保留注解。如果注解没有加Retention元注解,那么相当于默认的注解就是这种状态。
RetentionPolicy.RUNTIME:在运行有效(即运行时保留),当运行Java程序时,JVM会保留注释,加载在内存中,那么程序可以通过反射获取该注释。
- @Documented
- @Retention(RetentionPolicy.RUNTIME)
- @Target(ElementType.ANNOTATION_TYPE)
- public @interface Retention {
-
- RetentionPolicy value();
- }
-
- public enum RetentionPolicy {
-
- SOURCE,
-
- CLASS,
-
- RUNTIME
- }
- 复制代码
(2)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。