Java自定义注解

        Java自定义注解的原理是通过编译器和Java反射机制+AOP实现的。在编译过程中,编译器会检查自定义注解的合法性,并将注解信息保存到编译后的字节码文件中。

        首先需要明白的是注解是给程序看的,是一个给程序看的注释。@Autowired注解本身并没有相应的逻辑代码,当程序运行时会扫描哪些方法添加了该注解再做出相应的处理

        自定义一个注解需要用到两个重要的元注解@Target和@Retention,@Tartget用于指定该注解要用于那个地方,用于指定注解的保留域。

Retention:

        1.RetentionPolicy.SOURCE        //源代码级别,编译器处理后不再保留

        2.RetentionPolicy.CLASS        //注解信息保留到类文件中

        3.RetentionPolicy.RUNTIME        //JVM读取,运行时使用

ElemenType:

        1.ElemenType.TYPE        //类、接口

        2.ElemenType.FIEELD        //成员变量

        3.ElemenType.METHOD        //成员方法

        4.ElemenType.CONSTRUCTOR //构造器

        5.ElemenType.PACKEGE       / /包

        6.ElemenType.ANNOTATION_TYPE         //注解

        在运行时,Java反射机制可以通过获取类、方法或字段上的注解信息,从而实现对注解的解析和使用。

1.定义一个名字叫annotationDemo的注解

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

2.在方法上使用该注解

    @annotationDemo
    public void test() {
        System.out.println("hello world");
    }

3.使用反射查看使用该注解的方法

 @Test
    public void myMethod() throws Exception{
       Class clazz=Class.forName("com.jeem.app.config.annotationtest");
        Method[] ms = clazz.getMethods();
        for (Method m : ms) {
            if(m.isAnnotationPresent(annotationDemo.class)){
                System.out.println(m.getName());
            }
        }
    }

运行结果

test

Process finished with exit code 0

  • 11
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值