首页 > 编程语言 >Spring源码(一) 如何阅读 Spring 源码

Spring源码(一) 如何阅读 Spring 源码

时间:2024-07-07 23:30:23浏览次数:3  
标签:阅读 Spring age refresh 源码 context public 调试 name

学习 Spring 的源码,也可以通过 SpringBoot 搭环境。

不管是什么源码,最好写个 demo,跑起来,然后从常用的类和方法入手,跟踪调试。

配置对象

新建一个 SpringBoot 的项目, 详情见: https://blog.csdn.net/sinat_32502451/article/details/133039001

接着在 com.example.demo.model 路径建一个类 Person,属性包括 name和 age (也可以是其它的路径,与以下的class路径一致就行) 。

public class Person {


    private int age;


    private String name;
    
    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}    

然后在 resources 文件夹下,添加一个 mySpring.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.xsd">

    <bean id="person" class= "com.example.demo.model.Person">
        <property name="name" value="Tom"/>
        <property name="age" value="1"/>
    </bean>


</beans>

查看配置的对象值:

创建一个类,查看 xml 配置的对象的值:

public class MySpring {

    public static void main(String[] args) {
    	//可以在以下这段代码打个断点,跟踪调试
        ApplicationContext context =
                new ClassPathXmlApplicationContext("classpath*:mySpring.xml");
        Person person = context.getBean("person", Person.class);
        System.out.println("=======>"+ person.getName());

    }

}

在 ApplicationContext 开头的这段代码,打个断点, 然后 跟踪调试。

ClassPathXmlApplicationContext

从 xml 加载定义的 bean 对象,并且会通过 refresh 刷新 context 上下文 。

	/**
	 * Create a new ClassPathXmlApplicationContext with the given parent,
	 * loading the definitions from the given XML files.
	 * @param configLocations array of resource locations
	 * @param refresh whether to automatically refresh the context,
	 * loading all bean definitions and creating all singletons.
	 * Alternatively, call refresh manually after further configuring the context.
	 * @param parent the parent context
	 * @throws BeansException if context creation failed
	 * @see #refresh()
	 */
	public ClassPathXmlApplicationContext(
			String[] configLocations, boolean refresh, @Nullable ApplicationContext parent)
			throws BeansException {

		super(parent);
		//设置配置文件的路径
		setConfigLocations(configLocations);
		if (refresh) {
			//refresh()方法,负责初始化 ApplicationContext 容器。可以重点看看。
			refresh();
		}
	}

调试方法:

可以通过 Step Into 进入方法,也就是 Intellij Idea 的 F7 快捷键,继续跟踪。

Step Over ,也就是 Intellij Idea 的 F8 快捷键,单步调试,逐行调试。

遇到调用接口,如果不清楚是哪个接口实现类,可以直接在 Intellij Idea 的 接口上打断点,调试时会自动跳转到对应的接口实现类。

调试过程中,遇到不懂的,也可以百度搜索下。

标签:阅读,Spring,age,refresh,源码,context,public,调试,name
From: https://blog.csdn.net/sinat_32502451/article/details/140155044

相关文章

  • 基于Java“萌宠之家”宠物综合服务平台设计实现(源码+lw+部署文档+讲解等)
    \n文末获取源码联系感兴趣的可以先收藏起来,大家在毕设选题,项目以及论文编写等相关问题都可以给我加好友咨询系统介绍:互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针......
  • 基于Java“镜头人生”约拍网站系统设计实现(源码+lw+部署文档+讲解等)
    \n文末获取源码联系感兴趣的可以先收藏起来,大家在毕设选题,项目以及论文编写等相关问题都可以给我加好友咨询系统介绍:现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本“镜头人生”约拍网站就是在这样的大......
  • 基于Java:流浪动物领养信息系统设计实现(源码+lw+部署文档+讲解等)
    \n文末获取源码联系感兴趣的可以先收藏起来,大家在毕设选题,项目以及论文编写等相关问题都可以给我加好友咨询系统介绍:现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本流浪动物领养信息系统就是在这样的大......
  • 基于django(爱抚宠物) 小程序设计和实现(源码+LW+部署讲解)
    感兴趣的可以先收藏起来,大家在毕设选题,项目以及论文编写等相关问题都可以给我加好友咨询系统介绍:科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流,人类发展的......
  • 基于协同过滤技术的网上书城设计实现(源码+lw+部署文档+讲解等)
    \n文末获取源码联系感兴趣的可以先收藏起来,大家在毕设选题,项目以及论文编写等相关问题都可以给我加好友咨询系统介绍:社会发展日新月异,用计算机应用实现数据管理功能已经算是很完善的了,但是随着移动互联网的到来,处理信息不再受制于地理位置的限制,处理信息及时高效,备受人们的喜爱......
  • 基于微信小程序+Springboot校园二手商城系统设计和实现
    \n文末获取源码联系感兴趣的可以先收藏起来,大家在毕设选题,项目以及论文编写等相关问题都可以给我加好友咨询一、前言介绍:在当今社会的高速发展过程中,产生的劳动力越来越大,提高人们的生活水平和质量,尤其计算机科技的进步,数据和信息以人兴化为本的目的,给人们提供优质的服务,其......
  • 基于Java“花鸣”B2C电子商务平台设计实现(源码+lw+部署文档+讲解等)
    \n文末获取源码联系感兴趣的可以先收藏起来,大家在毕设选题,项目以及论文编写等相关问题都可以给我加好友咨询系统介绍:现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本“花鸣”B2C电子商务平台就是在这样......
  • spring statemachine
    进行状态转化的逻辑:org.springframework.statemachine.support.ReactiveStateMachineExecutor#queueEventFlux<Message<E>>messages=Flux.merge(message,Flux.fromIterable(deferList)); MonoSinkStateMachineExecutorCallbacktriggerCallback=newMonoSinkSt......
  • 基于SpringBoot+Vue+uniapp的随心淘网管理系统(源码+lw+部署文档+讲解等)
    文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言......
  • 基于SpringBoot+Vue+uniapp的劳务外包管理系统(源码+lw+部署文档+讲解等)
    文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言......