两个小程序重新认识java注解
很长一段时间,注解对于我而言是一个望而生畏的单词,因为不了解所以害怕。后来接触到spring,发现这个东西无处不在,要想对spring有更深入的认识,这个知识点必须要学习一下了,所以就静下心来仔细研究一下。其实知识对于我们而言,不知是最难的,当你真正去学习时,发现也并没有多难(其实这个过程也是挺费劲的哈哈,就是要多钻研)。
我们常见的注解,大多是用spring的时候知道的,@Bean、@Resource、@Autowired、@controller、@service等。
本文将就用程序告诉大家,我们也可以拿到注解中的所有信息。
操作方法
- 01
注解的用处:有类似类变量、枚举的功效,可以作为静态全局信息存在。为什么这么说,先看一个栗子:(创建一个注解和一个类)。
- 02
输出1,注解内部的变量,和类变量用起来没有差别。
- 03
所以我的理解(现在这个阶段):注解就是一个配置信息,当这个注解加在了某个类、方法、属性上时,这些个类、方法或者属性就拥有了这个配置信息。而当我们使用注解的时候,很难感官的理解注解到底做了什么,因为这些东西对于我们来说全不可见。就比如spring的“@bean"注解,源码的解释:Indicates that a method produces a bean to be managed by the Spring container,其实意思就是给方法加上这个注解,spring容器会帮我们创建了一个bean,不需要我们去配置文件配置这个bean了。原始的xml配置方式:<bean>id=.......class=.......</bean>,默认情况下,Bean 的名字即为方法名。
- 04
首先获取注解内部的信息,怎么获取这些个配置信息哪,我使用了java.lang.Class类中的getMethod方法。通过这个例子,将在测试类中获注解MyAnnotationForMethod的属性和方法。 创建一个注解和一个测试类,如下图。
- 05
其次获取MyAnnotationForMethod头上的信息,即修饰其的元注解信息,target和Retention。用的是,类的getAnnotations方法。
- 06
我们可以拿到注解的信息,这也就说明了,java会自动去处理这些注解(我们都能拿到注解的信息,java当然也能拿到这些信息,然后给类、方法、属性做一些特殊的处理)。其实我们要想开点,想的简单点,毕竟源码不是我们写的,它就是一个标签,当程序启动的时候,程序会自动扫描Class类,当发现这些个标签后,就会对类的内容做一些特殊的处理。