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 df733ef60a435f92eee5bb499de0b846592edfa2..532637718602485ed1fca4baa99a7c209f75b865 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 35d2cfcfb7daa70b44fcf5b5964dfed57b1abcbc..d909c80bd52b485f303b9e70e10fd3425f40799d 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 ca984968afa0b9d7037b05f4a0e15ec72021827f..e10b101cd4291066f81de69cf806efe380213237 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 c3f29e106ad90a81e1049a8422127eb7ae9b7347..4375c5516e0e72d089f5a7d4ab352e9af6a41cfe 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);