之 Java如何识别注解
关键词:Java 反射
java.lang.reflect 包,实现反射功能的工具类。
注解处理类库:java.lang.reflect.AnnotatedElement。
程序通过反射获取了某个类的AnnotatedElement对象之后, 程序就可以调用该对象如下的方法来访问Annotation的信息:
- Annotation[] getAnnotations()
Returns annotations that are <em>present</em> on this element.
- default boolean isAnnotationPresent(Class<? extends Annotation> annotationClass)
Returns true if an annotation for the specified type
is <em>present</em> on this element, else false.
- default <T extends Annotation> T getDeclaredAnnotation(Class<T> annotationClass)
Returns this element's annotation for the specified type if
such an annotation is <em>directly present</em>, 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处理注解的源码分析
[待续]
网友评论