SPRIN06_源码之核心组件接口BeanDefinition、Debug创建流程、流程图总结(一)

①. 环境准备


  • ①. 以xml的方式,因为注解的方式还稍微有一点点的不一样,所以在resources下面的beans.xml这里面准备一个cat,然后看看档案馆是如何工作的,而且在工作的过程中最好记录一下整体流程


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean class="com.xiaozhi.bean.Person" id="person">
        <property name="name" value="tangzhi"></property>
    </bean>

    <bean class="com.xiaozhi.bean.Cat" id="cat">
        <property name="name" value="TOMCAT"></property>
    </bean>
</beans>


SPRIN06_源码之核心组件接口BeanDefinition、Debug创建流程、流程图总结(一)


②. 然后再来到测试类MainTest,还是加载这个beans.xml配置文件


SPRIN06_源码之核心组件接口BeanDefinition、Debug创建流程、流程图总结(一)


③. 给档案馆的registerBeanDefinition方法下面的registerBeanDefinition代码中打了一个断点


(可以研究一下,打断点来验证一下这个事情:在beanDefinitionMap里面来搜一下(双击shift进行搜索),既然你是一个map,就先看什么时候调用put方法,那既然找到了put方法就给这个put的上面代码打一个断点,也既在DefaultListableBeanFactory这个类下面的这个registerBeanDefinition方法下面的Assert.hasText()这代码这里打一个断点,来看一下档案馆是如何工作的)


SPRIN06_源码之核心组件接口BeanDefinition、Debug创建流程、流程图总结(一)


④. 对上图的registerBeanDefinition进行补充说明


registerBeanDefinition名字一听,这叫注册bean的定义信息,registerBeanDefinition的上面注释中解释了是来实现BeanDefinitionRegistry接口的


beanDefinition(bean的定义)一直是造东西的图纸就叫bean的定义,然后这些bean的定义要存在这个定义的馆里面,而这个馆就叫BeanDefinitionRegistry (Bean的定义中心)


档案馆DefaultListableBeanFactory正好实现了BeanDefinitionRegistry (Bean的定义中心)


SPRIN06_源码之核心组件接口BeanDefinition、Debug创建流程、流程图总结(一)


SPRIN06_源码之核心组件接口BeanDefinition、Debug创建流程、流程图总结(一)


⑤. 看上图就是档案馆DefaultListableBeanFactory实现了BeanDefinitionRegistry (Bean的定义中心),那么只要实现了BeanDefinitionRegistry (Bean定义注册中心),那么自然而然要做的事情要编写人家的方法


双击shift搜索找到BeanDefinitionRegistry(Bean定义的注册中心),然后Ctrl+f12找到这个类的所有方法,这个类里面的方法有很多:其中有一个就叫注册bean的定义信息的方法==registerBeanDefinitio


SPRIN06_源码之核心组件接口BeanDefinition、Debug创建流程、流程图总结(一)

上一篇:Synology®新增支持阿里云OSS对象存储


下一篇:双11专栏 | EdgeRec:电商信息流的端上推荐系统