根据树看了一下源码
头都大了
类的继承图
C:\Users\linjunwei\.m2\repository\org\springframework\spring-beans\5.3.8\spring-beans-5.3.8-sources.jar!\org\springframework\beans\factory\xml\BeanDefinitionParserDelegate.java
这个类解析bean属性
FileSystemXmlApplicationContext 这个类 进去里面的refresh 创建ioc容器
下面这个类的refresh方法
C:\Users\linjunwei\.m2\repository\org\springframework\spring-context\5.3.8\spring-context-5.3.8-sources.jar!\org\springframework\context\support\AbstractApplicationContext.java
再找到C:\Users\linjunwei\.m2\repository\org\springframework\spring-context\5.3.8\spring-context-5.3.8-sources.jar!\org\springframework\context\support\AbstractRefreshableApplicationContext.java
refreshBeanFactory方法
上面一套操作创建ioc容器
看看怎么载入bean的
C:\Users\linjunwei\.m2\repository\org\springframework\spring-context\5.3.8\spring-context-5.3.8-sources.jar!\org\springframework\context\support\AbstractXmlApplicationContext.java
调用
XmlBeanDefinitionReader 的loadbeandefinitions方法
C:\Users\linjunwei\.m2\repository\org\springframework\spring-beans\5.3.8\spring-beans-5.3.8-sources.jar!\org\springframework\beans\factory\xml\XmlBeanDefinitionReader.java
看看这个类
贴一段源码方法,具体也不懂,不过看报错信息大概知道是解析xml文件的
![](/i/l/?n=23&i=blog/2504827/202212/2504827-20221218152702956-1630784554.png)
里面的 doLoadBeanDefinitions方法解析文件中定义的bean
书上说xml的解析分两部分 document 对xml文件进行通用解析
documentReader对xml中定义的bean使用spring规则进行解析
C:\Users\linjunwei\.m2\repository\org\springframework\spring-beans\5.3.8\spring-beans-5.3.8-sources.jar!\org\springframework\beans\factory\xml\DefaultBeanDefinitionDocumentReader.java
这个类的 processBeanDefinition 方法调用 xml解析bena的方法想容器注册bean
C:\Users\linjunwei\.m2\repository\org\springframework\spring-beans\5.3.8\spring-beans-5.3.8-sources.jar!\org\springframework\beans\factory\xml\BeanDefinitionParserDelegate.java
这个类解析bean 属性 对象 什么的
根据不同类型调用不同方法进行解析
乱七八糟的 记录一下,证明我来过
标签:xml,5.3,spring,springframework,bean,beans,org,ioc From: https://www.cnblogs.com/bawanglong168/p/16990466.html