学习ssm必须会的一个技术(注解),三个点让你快速熟练使用注解,以及了解框架使用注解的基本原理

1.认识注解

了解注解

注解本质是一个接口,该接口默认继承java.lang.annotation.Annotation接口

public @interface Anno1 {  // <- =   public @interface Anno1 extends Annotation
   /* String name();
    String method();*/
}

2.注解的作用

    1.编译检查:通过代码里标识的元数据让编译器能够实现基本的编译检查【override】
    2.编写文档:通过代码里标识的元数据生成文档【生成文档doc文档】
    3.代码分析:通过代码里标识的元数据对代码进行分析【使用反射】

1.编译检查

2.编写文档

3.代码分析 也是最常用的以后ssm三大框会经常用到 (重点讲解)

@Anno1(name = "com.xxxx.practice.demo1.student",method = "cat")
public class Teacher{
        
}

注解可以代替xml配置文件

那么我们如何来获取注解里面的参数?

先获取带有注解类的class文件

Teacher teacher = new Teacher();
Class<? extends Teacher> aClass = teacher.getClass();

获取到该类的calass文件,它里面有一个方法可以获取该类上面的注解

Teacher teacher = new Teacher();
Class<? extends Teacher> aClass = teacher.getClass();
Anno1 anno1 = aClass.getAnnotation(Anno1.class);

调用了getAnnotation()它返回了一个Anno1的注解对象

其实这里返回的是该注解对应的实例对象,它帮你自动创建好了

既然Anno1是一个实例对象,我们是不是可以调用里面的方法呢,当然可以,注解的本质是一个借口

而且java又帮我们创建好了该接口的实例对象

public @interface Anno1 {  // <- =   public @interface Anno1 extends Annotation
    String name();
    String method();
}

直接调方法就好了

Teacher teacher = new Teacher();
        Class<? extends Teacher> aClass = teacher.getClass();
        Anno1 anno1 = aClass.getAnnotation(Anno1.class);
        String name = anno1.name();
        String method = anno1.method();
        System.out.println(name);
        System.out.println(method);

//输出了:
//com.scxh.practice.demo1.student
//cat

有了对象名和方法名我们就可掉方法了,

 Teacher teacher = new Teacher();
        Class<? extends Teacher> aClass = teacher.getClass();
        Anno1 anno1 = aClass.getAnnotation(Anno1.class);
        String name = anno1.name();
        String method = anno1.method();
        System.out.println(name);
        System.out.println(method);
        Class<?> aClass1 = Class.forName(name);
        Constructor<?> constructor = aClass1.getConstructor();
        Object o = constructor.newInstance();
        Method m = aClass1.getMethod(method);
        m.invoke(o);

这就是一个完整的根据就注解获取注解参数,然后用反射调用方法的案列

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值