Java基础之Annotation-注解处理器,实现简版FactoryBean
小编是一个有着5年工作经验的全栈开发工程师,关于Java编程,自己有做材料的整合,一个完整的Java编程学习路线,学习材料和工具,能够进我的群 881982657收取,免费送给大家,希望你也能凭着自己的努力,成为下一个优秀的程序员。
在上一篇文章[Java基础之Annotation]中介绍了Annotation的的基础知识,并自定义了Entity和EntityProperty这两个注解,本篇将介绍如何利用Entity来自动注入bean,EntityProperty初始化bean。
注解处理器
自JDK1.5之后,java.lang.reflect 包所有提供的反射API扩充了读取运行时Annotation信息的能力,当注解被标记为运行时可见@Retention(RetentionPolicy.RUNTIME),就可以通过反射来处理注解。
常用API:
-
T getAnnotation(Class annotationClass):返回改程序元素上存在的、指定类型的注解,如果该类型注解不存在,则返回null。
-
Annotation[] getAnnotations():返回该程序元素上存在的所有注解。
-
boolean is AnnotationPresent(ClassannotationClass):判断该程序元素上是否包含指定类型的注解,存在则返回true,否则返回false.
-
Annotation[] getDeclaredAnnotations():返回直接存在于此元素上的所有注释。与此接口中的其他方法不同,该方法将忽略继承的注释(如果没有注释直接存在于此元素上,则返回长度为零的一个数组)该方法的调用者可以随意修改返回的数组;这不会对其他调用者返回的数组产生任何影响。
简版FactoryBean实现
需求:写个bean工厂,通过bean工厂可以获得所有添加了注解的bean对象,且bean对象的成员属性的值可以通过注解来设置。
实现:
定义Entity和EntityProperty两个注解:
-
Entity,添加了该注解的类会被BeanFactory自动加载,并实例会;
-
EntityProperty,通过该注解给bean的成员属性赋值(beanFactory在解析到成员属性有EntityProperty注解时,通过反射为其赋值);
目录结果如下图:
-
BeanFactory,遍历指定包下所有class文件,凡是添加@Entity注解的class会被实例化;
-
Car.java和User.java,User添加了注解,Car未添加注解,用于测试@Entity是否生效;
-
AnnotationClassUtil,加载指定包下的class文件,工具类;
-
AppAnnotation,入口类,有main方法;
目录结构
Entity.java注解类
Entity
EntityProperty.java注解类
EntityProperty
User.java
@Entity用于标识该类将会被自动注入;
@EntityProperty用于标识该类实例化时的初始值;
User.java
AnnotationClassUtil.java
主要是第38行
AnnotationClassUtil.java
BeanFactory.java
BeanFactory.java-1
BeanFactory.java-2
运行结果
只有User.java被自动注入,并且初始值也被正确赋予。
运行结果
- 【Java基础知识】 Annotation03_注解(Annotation)--注解处理器
- java基础之注解(annotation)——实现一个简单的ButterKnife
- java基础总结--注解(Annotation)--注解处理器
- Java基础笔记 – Annotation注解的介绍和使用 自定义注解
- 【黑马程序员】java基础加强-------注解(annotation)
- java动态代理对象实现日志的拦截(annotation自定义注解方式)
- Java注解annotation用法和自定义注解处理器
- (23) 深入理解Java:注解(Annotation)基本概念||自定义注解入门||及注解处理器
- Java基础-学习使用Annotation注解对象
- java反射基础,Beanfactory原理反射解析
- 黑马程序员--Java基础加强(4)--- JDK1.5新特性之JavaBean、注解
- Java基础:注解Annotation
- 深入理解Java:注解(Annotation)--注解处理器
- Java基础-学习使用Annotation注解对象
- 理解Java基础之注解Annotation
- 深入理解Java:注解(Annotation)--注解处理器
- 深入理解Java:注解(Annotation)--注解处理器
- Java基础加强总结(一)——注解(Annotation)
- Java Annotation 注解基础原理简析
- 深入理解Java:注解(Annotation)--注解处理器