源代码计划 Spring 5.6 源码解析【三】

如何自定义属性的扩展

在我们定义的标签当中试想一下有没有这样的需求,在一个标签内部不需要通过其他 bean 的引用就可以完成,内部属性对象的赋值操作呢?

例如这样:

java 复制代码
public static void main(String[] args) {
    ClassPathXmlApplicationContext application = new ClassPathXmlApplicationContext("editor.xml");
    Customer customer = application.getBean(Customer.class);
    System.out.println(customer);
}
xml 复制代码
<bean id="customer" class="com.peppa.selfEditor.Customer"
    <property name="address" value="彗星星球_灰星星_宅博士"/
    <property name="name" value="卡卡罗特"/
</bean

这就是今天要介绍的关于 refresh 方法当中的 prepareBeanFactory 准备 beanFactory 上下文方法当中的 addPropertyEditorRegistrar 添加属性编辑注册器的主要功能。

以及我们如何实现一个自定义的 addPropertyEditorRegistrar 注册器。

addPropertyEditorRegistrar 当中可以看到实现 PropertyEditorRegistrar 接口下的 registerCustomEditors(PropertyEditorRegistry registry) 的方法,该方法当中有一个 PropertyEditorRegistry 编辑对象。

那么该 registerCustomEditors(PropertyEditorRegistry registry) 方法到底是在什么时候调用,完成属性编辑器的注册呢?

前面的一些列流程当中以及完成了, beanDefinition 的简单注册,而接下来主要就是要将先前注册的这些 beanDefinition 分别的进行实例化,当然在实例化的前后还有 前置后置 的一些处理。既然是研究编辑器的具体实现,那还是以核心为主。关于前置后置的处理这里会暂时跳过。

那就直接进入 finishBeanFactroyInitialization(beanFactory) 当中去研究具体关于普通 bean 的处理大致流程,以及如何实现编辑器的调用处理。

开始具体的实例化工作

可以看到的是这里在先前在 xml 配置文件当中定义了两个 bean 实例 beanDefinition 对象。这里也将对其一一的进行遍历实例化处理。

这里需要特别注意一下 org.springframework.beans.factory.config.CustomEditorConfigurer#0

CustomEditorConfigurer 就是我们自定义的属性编辑器后续要进行添加的配置类入口。

开始实例化 Customer 并填充属性,在 doCurentBean 当中有一个 BeanWrapper 对象实例化的包装器对象。

这里将开始调用 registerCustomEditors 注册自定义编辑器

相关推荐
Anastasiozzzz15 分钟前
对抗大文件上传---分片加多重Hash判重
服务器·后端·算法·哈希算法
Vivienne_ChenW17 分钟前
DDD领域模型在项目中的实战
java·开发语言·后端·设计模式
女王大人万岁31 分钟前
Go标准库 sync 详解
服务器·开发语言·后端·golang
小高Baby@39 分钟前
session、cookie、Jwt-token
开发语言·后端·golang
露天赏雪41 分钟前
JDK8 的入门避坑指南
java·服务器·windows·spring boot·后端·spring·性能优化
爬山算法1 小时前
Hibernate(86)如何在性能测试中使用Hibernate?
java·后端·hibernate
菜鸟小杰子1 小时前
Spring Boot集成asyncTool:复杂任务的优雅编排与高效执行(实战优化版)
java·spring boot·后端
rannn_1111 小时前
【苍穹外卖|Day3】公共字段自动填充、新增菜品功能、菜品分页查询功能、删除菜品功能、修改菜品功能、起售停售菜品
java·spring boot·后端·学习·项目
无名-CODING1 小时前
SpringMVC处理流程完全指南:从请求到响应的完整旅程
java·后端·spring
BYSJMG1 小时前
计算机毕设推荐:基于大数据的共享单车数据可视化分析
大数据·后端·python·信息可视化·数据分析·课程设计