`
JerryWang_SAP
  • 浏览: 1025618 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

Java Spring Beans.xml里的Bean定义是如何被解析出来的

阅读更多

ClassPathXmlApplicationContext的构造函数里,一部分逻辑是给各个成员变量赋上初始值:

 

 

然后是执行refresh操作。

获取ConfigurableListableBeanFactory:

 

 

来自Beans.xml的bean,被解析出来后,就存储在BeanFactory的成员变量beanDefinitionMap里。

 

 

那么Beans.xml里的bean定义,是如何被解析的呢?

进入abstractApplicationContext里看个究竟:

 

 

loadBeanDefintions方法:

 

 

进入AbstractXmlApplicationContext的loadBeanDefinitions方法:

 

 

从Beans.xml处读取并解析bean定义:reader.loadBeanDefinitions(configLocations);

 

递归调用方法AbstractBeanDefinitionReader的loadBeanDefinitions:

 

 

递归调用loadBeanDefinitions,此时这个方法接收的输入参数成为了Resource类型:

 

 

进入了XmlBeanDefinitionReader.loadBeanDefinitions方法:

 

 

开始对Beans.xml文件进行IO操作:

 

 

将Java IO操作返回的inputSource传入doLoadDocument:

 

 

使用documentBuilder解析Beans.xml:

 

 

countBefore为0,然后进行registerBeanDefinitions操作:

 

 

在registerBeanDefintions方法里,通过org.w3c.dom.Element提供的XML API进行解析:

 

 

解析分为preProcess,parseBeanDefinitions和postProcess三个步骤:

 

 

进入这个IF分支,说明在Beans.xml里找到了一个bean节点:

 

 

这就是解析出来的beanDefinition:

 

 

在Beans.xml里的bean定义如下:

 

 

要获取更多Jerry的原创文章,请关注公众号"汪子熙":

0
0
分享到:
评论

相关推荐

    spring bean XML配置入门

    在本文中,我们将深入探讨Spring框架中的Bean XML配置,这是Spring的核心特性之一,它允许我们定义、管理和装配应用中的对象。我们将围绕以下知识点展开: 1. **Spring框架基础**: Spring是一个开源的Java平台,...

    org.springframework.beans.factory.config.PropertyPlaceholderConfigurer

    这个类是Spring在初始化bean时用来解析和注入环境变量或系统属性的关键工具,使得开发者可以在配置文件中使用`${property}`形式的占位符,然后在运行时被实际值替换。 在Spring应用中,我们经常会在XML配置文件或者...

    spring-beans.zip

    容器通过XML、注解或基于Java的配置方式来解析bean的定义,然后根据这些定义来实例化和管理bean。 在XML配置中,bean定义通常包括ID、class属性(指定bean的类)以及属性值或引用。例如: ```xml <bean id=...

    org.springframework.web.servlet-3.0.1.RELEASE-A.jar

    nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userController' defined in ServletContext resource [/WEB-INF/springMVC-servlet.xml]: Error ...

    spring-beans-4.2.xsd.zip

    标题中的"spring-beans-4.2.xsd.zip"是一个压缩包,主要包含与Spring框架相关的XML Schema定义文件。Spring框架是Java开发中广泛使用的轻量级应用框架,尤其在处理依赖注入(Dependency Injection,DI)和面向切面...

    spring 4.x源码方式配置spring beans

    `@Configuration`注解标记一个类为配置类,这个类将被Spring容器用来生成bean定义。配置类中的方法通常带有`@Bean`注解,这些方法将返回一个对象,该对象会被Spring容器识别为一个Bean。例如: ```java @...

    spring4的所有jar包+applicationContext.xml+web.xml

    2. **ApplicationContext.xml**:这是Spring应用上下文的配置文件,它定义了bean的创建、依赖关系以及其他的配置信息。在`applicationContext.xml`中,我们可以声明bean的实例化、属性注入、bean之间的依赖关系、AOP...

    spring beans dtd.zip

    在C#项目中,Spring.NET会解析这些XML配置文件,根据DTD定义的规则实例化对象、注入依赖,使得开发者可以从繁琐的依赖管理中解脱出来,专注于业务逻辑。例如,我们可以在C#代码中声明一个接口,然后在XML配置文件中...

    Spring 2.5-applicationContext.xml提示信息的配置

    在Spring框架中,`applicationContext.xml`是应用上下文的核心配置文件,用于定义bean的创建、依赖关系以及各种服务的配置。这篇博文“Spring 2.5 - applicationContext.xml提示信息的配置”主要探讨了如何在Spring ...

    spring-beans-3.0.2.RELEASE.jar.zip

    BeanFactory是Spring的基础容器,可以加载配置文件,解析Bean的定义,并负责Bean的实例化。而ApplicationContext则是在BeanFactory基础上扩展,除了基本的Bean管理功能,还增加了国际化、事件发布、资源加载等功能,...

    xml_programming_in_java.rar_XML java_java programming_xml how to

    在Spring框架中,XML配置文件用于定义bean及其依赖关系。`org.springframework.beans.factory.xml.XmlBeanFactory`类用于加载和管理这些配置。 10. **XML的序列化和反序列化** Java的`java.io.ObjectOutputStream...

    自定义注解得使用,模拟spring通过注解方式创建bean实例

    在Java开发中,Spring框架是广泛使用的IoC(Inversion of Control)和AOP(Aspect Oriented Programming)容器。Spring的注解功能极大地简化了配置,使得开发者可以更专注于业务逻辑。本篇将深入探讨如何自定义注解...

    Spring Boot技术知识点:如何读取不同路径里的applicationContext.xml配置文件2

    在Spring Boot应用中,我们通常使用YAML或Java配置来管理我们的应用程序设置。然而,在某些情况下,可能需要从传统的`applicationContext.xml`配置文件中读取配置,这可能是因为历史遗留项目、集成第三方库或者为了...

    spring-beans

    Spring框架是Java领域中极为重要的轻量级开源框架,而`spring-beans`模块则是Spring框架的核心部分,它主要负责Bean的定义、实例化、配置和管理。本篇将深入探讨`spring-beans`的相关知识点,帮助读者理解其内在机制...

    springAOP demo 带错误解决文档

    在搭建spring项目时通常需要这些jar包 ... at org.springframework.beans.factory.parsing.FailFastProblemReporter.error(FailFastProblemReporter.java:70) 由于缺少依赖包 aspectjweaver-1.6.12.jar ...

    SPRING:bean配置properties

    在Spring框架中,Bean的配置与管理是其核心功能之一,而通过`PropertyPlaceholderConfigurer`进行属性占位符的配置则是实现动态配置的关键技术。本文将深入解析如何利用`PropertyPlaceholderConfigurer`进行bean配置...

    Web项目中获取SpringBean与在非Spring组件中获取SpringBean.pdf

    在Web项目中,Spring框架提供了一种控制反转(Inversion of Control, IOC)和依赖注入(Dependency Injection, DI)的功能,使得我们可以方便地管理和使用Bean。然而,有时我们需要在非Spring管理的组件或者非Spring...

    applicationContext.xml详解

    ### Spring框架中的applicationContext....总之,`applicationContext.xml`是Spring应用的核心,它定义了所有的bean及其依赖关系,使得Spring框架能够管理整个应用的生命周期,极大地提高了开发效率和代码的可维护性。

Global site tag (gtag.js) - Google Analytics