Java轻松开发自定义注解

注解开发

元注解

@Target(ElementType)

修饰的这个注解的使用范围,即被描述的注解可以用在哪里。

@Target(ElementType.TYPE)——接口、类、枚举、注解

@Target(ElementType.FIELD)——字段、枚举的常量

@Target(ElementType.METHOD)——方法

@Target(ElementType.PARAMETER)——方法参数

@Target(ElementType.CONSTRUCTOR)——构造函数

@Target(ElementType.LOCAL_VARIABLE)——局部变量

@Target(ElementType.ANNOTATION_TYPE)——注解

@Target(ElementType.PACKAGE)——包**

也可以是个数组**@Target({ElementType.TYPE, ElementType.METHOD})**


@Retention(RetentionPolicy)

注解的生存周期,即会保留到哪个阶段。

  1. SOURCE. 注解保留在源代码中,但是编译的时候会被编译器所丢弃。比如@Override, @SuppressWarnings;
  2. CLASS. 这是默认的policy。注解会被保留在class文件中,但是在运行时期间就不会识别这个注解
  3. RUNTIME. 注解会被保留在class文件中,同时运行时期间也会被识别。所以可以使用反射机制获取注解信息。比如@Deprecated。

自定义注解

@interface就是用来定义注解的,类似于class定义类 和 interface 定义接口

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface AutoCheck {

    String value() default "";
}

String value() default"“;定义一个value()的方法,返回值类型时String没有赋值默认返回”"这个字符串

定义注解配置类

@Aspect
@Component
@Slf4j
public class AutoInterceptor {

    static {
        log.info("AutoInterceptor run ...");
    }

    @Pointcut("execution(* *(..))")
    private void pointCut() {
    }

    @Around("pointCut() && @annotation(autoCheck)")
    public void beforeCheckBean(JoinPoint point, AutoCheck autoCheck) throws Exception {
        // 判断注解中的属性是否为空
        if(autoCheck.value().equals("")){
            System.out.println("autoCheck:"+"注解属性为空");
        }else {
            System.out.println(autoCheck.value());
        }
    }
}

测试

@RestController
public class UserController {

    @GetMapping("/user")
    @AutoCheck(value = "testAutoCheck")
    public String test(){
        return "testuser";
    }
}

在这里插入图片描述

在这里插入图片描述

成功…

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值