Spring源码解析-配置文件的加载

Posted 92#

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring源码解析-配置文件的加载相关的知识,希望对你有一定的参考价值。

 

  spring是一个很有名的java开源框架,作为一名javaer还是有必要了解spring的设计原理和机制,beans、core、context作为spring的三个核心组件。而三个组件中最重要的就是beans组件了。

  从一个简单实例来查看spring加载配置文件中的bean。

public class Student {

    private int stId;

    private String studentName;

    private String studentAge;

    public int getStId() {
        return stId;
    }

    public void setStId(int stId) {
        this.stId = stId;
    }

    public String getStudentName() {
        return studentName;
    }

    public void setStudentName(String studentName) {
        this.studentName = studentName;
    }

    public String getStudentAge() {
        return studentAge;
    }

    public void setStudentAge(String studentAge) {
        this.studentAge = studentAge;
    }
}

  spring-beans.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" xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">
    <bean id="student" class="org.lzyer.test.Student"></bean>
</beans>

  测试类

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({
        "classpath:spring/spring-beans.xml"})
public class SpringSourceTest {
    @Test
    public void testSpring1(){
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:spring/spring-beans.xml");
        Student student = (Student)context.getBean("student");
        System.out.println(student);
    }
}

  spring配置文件加载流程

    

点击查看大图

下面对每一个流程的代码展示

 刷新context

获取beanFactory

 刷新beanFacory

 

 

 获取配置文件,并且加载beanDefinition

 读取配置文件

解析xml文件

解析beanDefinition

 

 

注册beanDefinition

最后将beanDefinition注册到beanDefinitionMap中

 

以上是关于Spring源码解析-配置文件的加载的主要内容,如果未能解决你的问题,请参考以下文章

spring源码解析之IOC容器------加载和注册

Spring源码解析之基础应用

Spring源码分析bean的加载

Spring Boot v2.4.4源码解析配置文件加载篇一 #2.4版本与2.3版本差异

spring源码深度解析— IOC 之 开启 bean 的加载

Spring源码学习笔记