网站首页 > 技术教程 正文
在上一篇文章[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被自动注入,并且初始值也被正确赋予。
运行结果
猜你喜欢
- 2024-10-19 Java 项目编译提示 javax.xml.bind.annotation does not exist 错误
- 2024-10-19 Android annotation包下常用的注解
- 2024-10-19 SpringMVC疑难一:mvc:annotation-dr
- 2024-10-19 Spring 中 AnnotationConfigUtils
- 2024-10-19 spring mvc 配置失效了?(springmvc的配置)
- 2024-10-19 为什么都爱着江南?黛瓦白墙,烟雨朦胧,是文人魂牵梦绕的故乡
- 2024-10-19 Spring框架系列之构造方法底层剖析01
- 2024-10-19 基于.NET6包含DDD,ES,CQRS等概念的开源
- 2024-10-19 spring 中 AnnotationUtils 的常用方法
- 2024-10-19 SpringBoot实战4-Spring基础-IoC容器
欢迎 你 发表评论:
- 10-23Excel计算工龄和年份之差_excel算工龄的公式year
- 10-23Excel YEARFRAC函数:时间的"年份比例尺"详解
- 10-23最常用的10个Excel函数,中文解读,动图演示,易学易用
- 10-23EXCEL中如何计算截止到今日(两个时间中)的时间
- 10-2390%人不知道的Excel神技:DATEDIF 精准计算年龄,告别手动算错!
- 10-23计算工龄及工龄工资(90%的人搞错了):DATE、DATEDIF组合应用
- 10-23Excel中如何计算工作日天数?用这两个函数轻松计算,附新年日历
- 10-23怎样快速提取单元格中的出生日期?用「Ctrl+E」批量搞定
- 最近发表
-
- Excel计算工龄和年份之差_excel算工龄的公式year
- Excel YEARFRAC函数:时间的"年份比例尺"详解
- 最常用的10个Excel函数,中文解读,动图演示,易学易用
- EXCEL中如何计算截止到今日(两个时间中)的时间
- 90%人不知道的Excel神技:DATEDIF 精准计算年龄,告别手动算错!
- 计算工龄及工龄工资(90%的人搞错了):DATE、DATEDIF组合应用
- Excel中如何计算工作日天数?用这两个函数轻松计算,附新年日历
- 怎样快速提取单元格中的出生日期?用「Ctrl+E」批量搞定
- Excel日期函数之DATEDIF函数_excel函数datedif在哪里
- Excel函数-DATEDIF求司龄_exceldatedif函数计算年龄
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)

本文暂时没有评论,来添加一个吧(●'◡'●)