闲聊spring源码四(xml refresh之前的源码)

概述

前面理清了spring xml 方式BeanDefinition方式注册方式及单例BeanDefinition的实例化和初始化,下面将按重要方法来详细讲解

闲聊spring系列

方法

// 源代码详细位置
org.springframework.context.support.ClassPathXmlApplicationContext#ClassPathXmlApplicationContext(java.lang.String[], boolean, org.springframework.context.ApplicationContext)

两个重要方法

// 第一个
super(parent);
// 第二个
setConfigLocations(configLocations);

super(parent)

// 代码重要位置
// 解析带有*等通配符路径的资源文件
org.springframework.context.support.AbstractApplicationContext#AbstractApplicationContext()

ResourcePatternResolver (Strategy interface for resolving a location pattern (for example, an Ant-style path pattern) into {@link Resource} objects.) 解决本地资源匹配的策略接口,例如 ant路径适配

小知识补充 ant通配符有三种

通配符说明
?匹配任何单字符
*匹配0或者任意数量的字符
**匹配0或者更多的目录,多层路径,等价于*/*/…

PathMatchingResourcePatternResolver 这个类重要,ResourcePatternResolver上面有比较详细的解释,实际上传的是ClassPathXmlApplicationContext对象,ClassPathXmlApplicationContext实现了ResourceLoader接口 ,所以复用了ResourceLoader默认实现类的功能

/**
 * Return the ResourcePatternResolver to use for resolving location patterns
 * into Resource instances. Default is a
 * {@link org.springframework.core.io.support.PathMatchingResourcePatternResolver},
 * supporting Ant-style location patterns.
 * 此处返回用于解析本地匹配的资源对象,默认使用 PathMatchingResourcePatternResolver支持
 * Ant-style 本地匹配
 */
protected ResourcePatternResolver getResourcePatternResolver() {
	return new PathMatchingResourcePatternResolver(this);
}
/**
 * Set the parent of this application context.
 * 设置父类上下文环境,一般是没有的
 */
@Override
public void setParent(@Nullable ApplicationContext parent) {
	this.parent = parent;
	if (parent != null) {
		Environment parentEnvironment = parent.getEnvironment();
		if (parentEnvironment instanceof ConfigurableEnvironment configurableEnvironment) {
			getEnvironment().merge(configurableEnvironment);
		}
	}
}

setConfigLocations(configLocations);

此方法主要设置了属性解析(占位符)及系统环境变量的加载

// PropertySourcesPropertyResolver
// customizePropertySources(propertySources);
setConfigLocations(configLocations);

获取环境对象,没有就创建一个

在这里插入图片描述

getEnvironment()中加载了系统属性及环境变量值

在这里插入图片描述

resolveRequiredPlaceholders(String text) 方法;属性解析及占位符赋值相关对象初始化

在这里插入图片描述
在这里插入图片描述

结束

对应重要的接口,可以深入的了解一下源码注释,有利于对其实现类有个清晰的脉络

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

流月up

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值