From ab396966eac78c435fa6dfb1a0ea697768d6b05a Mon Sep 17 00:00:00 2001 From: Scott Date: Tue, 11 May 2021 18:18:17 +0800 Subject: [PATCH] =?UTF-8?q?feat(config):=20=E6=B7=BB=E5=8A=A0=E8=A7=A3?= =?UTF-8?q?=E6=9E=90=E9=85=8D=E7=BD=AE=E5=90=8D=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../context/support/AbstractApplicationContext.java | 3 +++ .../support/AbstractRefreshableConfigApplicationContext.java | 1 + .../context/support/ClassPathXmlApplicationContext.java | 1 + .../org/springframework/core/env/AbstractPropertyResolver.java | 1 + 4 files changed, 6 insertions(+) diff --git a/spring-context/src/main/java/org/springframework/context/support/AbstractApplicationContext.java b/spring-context/src/main/java/org/springframework/context/support/AbstractApplicationContext.java index df733ef..5326377 100644 --- a/spring-context/src/main/java/org/springframework/context/support/AbstractApplicationContext.java +++ b/spring-context/src/main/java/org/springframework/context/support/AbstractApplicationContext.java @@ -226,6 +226,7 @@ public abstract class AbstractApplicationContext extends DefaultResourceLoader * Create a new AbstractApplicationContext with no parent. */ public AbstractApplicationContext() { + // 调用父类构造方法,设置类加载器 // 设置资源解析器,默认实现为 PathMatchingResourcePatternResolver this.resourcePatternResolver = getResourcePatternResolver(); } @@ -318,6 +319,7 @@ public abstract class AbstractApplicationContext extends DefaultResourceLoader @Override public ConfigurableEnvironment getEnvironment() { if (this.environment == null) { + // 创建并返回一个新的StandardEnvironment this.environment = createEnvironment(); } return this.environment; @@ -329,6 +331,7 @@ public abstract class AbstractApplicationContext extends DefaultResourceLoader * a custom {@link ConfigurableEnvironment} implementation. */ protected ConfigurableEnvironment createEnvironment() { + // 实例化StandardEnvironment对象,并设置java所使用属性资源 customizePropertySources return new StandardEnvironment(); } diff --git a/spring-context/src/main/java/org/springframework/context/support/AbstractRefreshableConfigApplicationContext.java b/spring-context/src/main/java/org/springframework/context/support/AbstractRefreshableConfigApplicationContext.java index 35d2cfc..d909c80 100644 --- a/spring-context/src/main/java/org/springframework/context/support/AbstractRefreshableConfigApplicationContext.java +++ b/spring-context/src/main/java/org/springframework/context/support/AbstractRefreshableConfigApplicationContext.java @@ -123,6 +123,7 @@ public abstract class AbstractRefreshableConfigApplicationContext extends Abstra * @see org.springframework.core.env.Environment#resolveRequiredPlaceholders(String) */ protected String resolvePath(String path) { + // 创建上下文的Environment,并解析配置文件名 return getEnvironment().resolveRequiredPlaceholders(path); } diff --git a/spring-context/src/main/java/org/springframework/context/support/ClassPathXmlApplicationContext.java b/spring-context/src/main/java/org/springframework/context/support/ClassPathXmlApplicationContext.java index ca98496..e10b101 100644 --- a/spring-context/src/main/java/org/springframework/context/support/ClassPathXmlApplicationContext.java +++ b/spring-context/src/main/java/org/springframework/context/support/ClassPathXmlApplicationContext.java @@ -139,6 +139,7 @@ public class ClassPathXmlApplicationContext extends AbstractXmlApplicationContex throws BeansException { // 初始化父类属性值以及设置资源解析器 super(parent); + // 设置上下文环境,并解析配置文件 setConfigLocations(configLocations); if (refresh) { refresh(); diff --git a/spring-core/src/main/java/org/springframework/core/env/AbstractPropertyResolver.java b/spring-core/src/main/java/org/springframework/core/env/AbstractPropertyResolver.java index c3f29e1..4375c55 100644 --- a/spring-core/src/main/java/org/springframework/core/env/AbstractPropertyResolver.java +++ b/spring-core/src/main/java/org/springframework/core/env/AbstractPropertyResolver.java @@ -205,6 +205,7 @@ public abstract class AbstractPropertyResolver implements ConfigurablePropertyRe @Override public String resolveRequiredPlaceholders(String text) throws IllegalArgumentException { if (this.strictHelper == null) { + // 创建PlaceholderHelper组件,用于解析配置文件名,如设置${前缀等等... this.strictHelper = createPlaceholderHelper(false); } return doResolvePlaceholders(text, this.strictHelper); -- Gitee