java 四大元注解及自定义注解

一、java中元注解有四个: @Retention @Target @Document @Inherited;

(1)@Retention:描述注解的生命周期;

  参数:枚举 RetentionPolicy

    1)source:源码级别,编译后失效;

    2)class:二进制级别,编译有效,运行失效;

    3runtime运行时级别,该注解在运行时仍然有效;

(2)@Target:注解的作用目标

  参数:枚举 ElementType

    1)ANNOTATION_TYPE :注释类型声明(接口、类、枚举、注解)

    2)CONSTRUCTOR:构造方法声明

    3)FIELD:字段声明(包括枚举常量)

    4)LOCAL_VARIABLE:局部变量声明

    5)METHOD:方法声明

    6)PACKAGE:包声明

    7)PARAMETER:参数声明

    8)TYPE:类、接口(包括注释类型)或枚举声明

    9)TYPE_PARAMETER:用于标注类型参数;//1.8

    10)TYPE_USE:可以标注任何类型名称;//1.8

 (3)@Documented:javadoc文档注解(说明该注解将被包含在javadoc中);

 (4)@Inherited:自动继承注解(注解标记其他的注解用于指明标记的注解是可以被自动继承的);

     注意:此注解只对注解标记的超类有效,对接口是无效的。

二、自定义注解

1.创建自定义注解

@Documented
@Target({ElementType.TYPE,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface TestAnnotion {
     String desc() default "";

     String value() default "";

}

2.创建自定义注解AOP类(用于拦截自定义注解)

 必须要返回 joinPoint.proceed();否则无法回到被拦截的方法中

@Aspect
@Component
public class MyAnnotionAop {

    private static  final Logger logger = LoggerFactory.getLogger(MyAnnotionAop.class);

    @Around(value = "@annotation(testAnnotion)", argNames = "joinPoint, testAnnotion")
    public Object getMyAnnotion(ProceedingJoinPoint joinPoint,TestAnnotion testAnnotion){

       String desc =  testAnnotion.desc();
       String value =  testAnnotion.value();

        try {
           return joinPoint.proceed();
        } catch (Throwable throwable) {
            throwable.printStackTrace();
        }
        return "aaa";
    }
}

3.使用注解

@RequestMapping("/annoTest")
@Controller
public class TestController {

    @RequestMapping("anno")
    @TestAnnotion(value = "test",desc = "测试")
    public void testAnno(){
        System.out.println("测试自定义注解");
        for(int i=0;i<1000;i++){
            System.out.println(i);
        }

    }
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JAVA菜鸟程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值