[Spring 源码] bean 加载机制 电玩女神 2022-06-04 02:22 225阅读 0赞 **本文主要内容为: spring 如何通过 XmlBeanFactory 解析并注册 bean.xml 配置文件中的 bean。** bean.xml 配置文件为: <?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-3.0.xsd"> <bean id="quartzProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean"> <property name="locations" value="classpath*:properties/quartz/*.properties"/> <property name="fileEncoding" value="UTF-8"/> </bean> </beans> 获取 bean 方式: BeanFactory bf = new XmlBeanFactory(new ClassPathResource("bean.xml")); Object obj = bf.getBean("quartzProperties"); System.out.println(obj); 输出为: ![输出 bean][bean] ## 一、XmlBeanFactory ## ![XmlBeanFactory][] ## 二、XmlBeanDefinitionReader ## ![XmlBeanDefinitionReader-1][] ![XmlBeanDefinitionReader-2][] ![XmlBeanDefinitionReader-3][] ## 三、DefaultBeanDefinitionDocumentReader ## ![DefaultBeanDefinitionDocumentReader-1][] ![DefaultBeanDefinitionDocumentReader-2][] 注:此处 `preProcessXml(root), postProcessXml(root)` 为 模板方法模式,有需要时由用户自定义实现: 1. preProcessXml() 为在解析 bean definition 之前处理 2. postProcessXml() 为在解析 bean definition 之后处理 ![DefaultBeanDefinitionDocumentReader-3][] 此处分为 解析默认元素 和 自定义元素。 ### 1.解析默认标签 ### ![解析默认标签][SouthEast] 分为四种: 1. import 标签 2. alias 标签 3. bean 标签 4. beans 标签 未完待续。。。 -------------------- 相关文章: [什么是 DOM][DOM] [模板方法模式][Link 1] [bean]: /images/20220604/b5c3e55a710949cbb67f41e83328c38f.png [XmlBeanFactory]: /images/20220604/11a7c0e38d004104937c7160db5daeb4.png [XmlBeanDefinitionReader-1]: /images/20220604/55735554e1b54d4292785274be75c10d.png [XmlBeanDefinitionReader-2]: /images/20220604/7d77267e025d42c1b46c2e7ec6d6c9a4.png [XmlBeanDefinitionReader-3]: /images/20220604/1210faa69c034b3baaa5eda6a1d54045.png [DefaultBeanDefinitionDocumentReader-1]: /images/20220604/8a97e1788f814c65a1d6f86a961a6d90.png [DefaultBeanDefinitionDocumentReader-2]: /images/20220604/b2efddf159fa41f4b13692e537884cac.png [DefaultBeanDefinitionDocumentReader-3]: /images/20220604/6101e082042f461e9fb1559a0c0ddb91.png [SouthEast]: /images/20220604/6f3ee6d7459c49deb4eaf1667a38c6ca.png [DOM]: http://blog.csdn.net/u012099869/article/details/78689148 [Link 1]: http://blog.csdn.net/u012099869/article/details/78689257
还没有评论,来说两句吧...