Java自定义注解

tips:新人小白的一点碎碎念,有不足的地方欢迎各位大佬指正和补充~

一、注解的基本作用

  • 生成文档
  • 跟踪代码的依赖性,实现替代配置文件功能
  • 在编译时进行格式检查

二、元注解

元注解一共有四个,都可以在java.lang.annotation下找到

1)@Target

  • @Target注解主要用于定义注解使用的位置,被描述的注解可以用在什么地方
    @Target如果不设置范围的话默认可以作用于所有目标上面
  • @Target的参数是ElementType枚举类
枚举作用
ElementType.PACKAGE注解用于包
ElementType.TYPE作用于类型(类、接口、注解、枚举)
ElementType.ANNOTATION_TYPE作用于注解
ElementType.CONSTRUCTOR作用于构造方法
ElementType.METHOD作用于方法
ElementType.PARAMETER作用于方法参数
ElementType.FIELD作用于属性
ElementType.LOCAL_VARIABLE作用于局部变量

2)@Retention

  • @Retention注解的作用就是指定注解的生命周期
  • @Retention的参数是RetentionPolicy枚举类
枚举作用
RetentionPolicy.SOURCE源码中保留,编译期可以处理
RetentionPolicy.CLASS(默认)Class文件中保留,Class加载时可以处理
RetentionPolicy.RUNTIME运行时保留,运行中可以处理

3)@Documented

@Documented注解的主要作用是描述注解文档化。就是在生成javadoc的时候是不包含注释的,但是如果注释被@Documented修饰,则生成的文档就包含该注解

4)@Inherited

@Inherited注解修饰的注解是具有可继承性的,就是说我们用@Inherited修饰了一个类,那么这个类的子类也会默认继承此注解

三、AOP+自定义注解实现日志管理

1)自定义注解
@Documented
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface Log {

  /**
   * 操作描述
   */
  String value() default "";

  /**
   * 是否记录响应参数
   */
  boolean recordRsponse() default false;

  /**
   * 请求参数列表
   */
  String[] request() default {};

}
2)使用
@Log(value = "注册设备",recordRsponse = true,request = {"1:dto"})
public Result registerDevice(@RequestBody IbRegisterDeviceDto dto) {
	//....
}
3)数据处理
@Aspect
@Component
public class OperationLogAspect {

  private RestTemplate restTemplate;
  private MongoTemplate mongoTemplate;

  @Autowired
  public OperationLogAspect(@Qualifier("defaultRestTemplate") RestTemplate restTemplate,
                            MongoTemplate mongoTemplate){
    this.restTemplate=restTemplate;
    this.mongoTemplate=mongoTemplate;
  }

  @Around("@annotation(annotation)")
  public Object process(ProceedingJoinPoint joinPoint, Log annotation) throws Throwable {
     Object proceed=joinPoint.proceed();
     //....
	 return proceed;
  }
}

参考原文档:https://blog.csdn.net/weixin_38328252/article/details/103557286

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值