Spring注解原理探索(三)

之 Java如何识别注解

关键词:Java 反射
java.lang.reflect 包,实现反射功能的工具类。
注解处理类库:java.lang.reflect.AnnotatedElement。

程序通过反射获取了某个类的AnnotatedElement对象之后, 程序就可以调用该对象如下的方法来访问Annotation的信息:

  • Annotation[] getAnnotations()

Returns annotations that are present on this element.

  • default boolean isAnnotationPresent(Class annotationClass)

Returns true if an annotation for the specified type
is present on this element, else false.

  • default T getDeclaredAnnotation(Class annotationClass)

Returns this element's annotation for the specified type if
such an annotation is directly present, else null.

为了处理注解,** 注解处理器 **做3件事情:

  • 读取配置文件中管理的bean
  • 实例化bean
  • 注解处理器获取实例bean中的注解并操作

前提假设:
我们已经自定义注解类,如 @RequestMapping 注解类,
并在合适的bean做出注解标注。
则编写自己的注解处理器。

// 自定义的注解处理器
public class ClassPathXMLApplicationContext {
    
    public ClassPathXMLApplicationContext(String configFileName) {
        // 读取配置文件中管理的bean
        readXMLConfigFile(configFileName);
        // 实例化bean
        instanceBean();
        // 向容器注册bean
        registerAnnotationBean();
    }

    // 读取配置文件中的bean
    private void readXMLConfigFile() {

    }

    // 实例化bean
    private void instanceBean() {

    }

    // 向容器注册bean
    private void registerAnnotationBean() {

    }
}

Spring 是如何实现注解的扫描注册的?
请参考 Spring注解原理探索(四)之Spring处理注解的源码分析
[待续]

你可能感兴趣的:(Spring注解原理探索(三))