从Spring启动我们知道,第一件做的事情就是--创建环境--Environment
查看代码知道:
复制代码
1
2interface Environment extends PropertyResolver{
复制代码
1
2
3
4
5String[] getActiveProfiles(); String[] getDefaultProfiles(); boolean acceptsProfiles(String... var1);
}
复制代码
1Environment接口的方法是获取当前激活的Profiles和默认的Profiles,得知当前激活的切面。
我们再看 PropertyResolver
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21public interface PropertyResolver { boolean containsProperty(String var1); @Nullable String getProperty(String var1); String getProperty(String var1, String var2); @Nullable <T> T getProperty(String var1, Class<T> var2); <T> T getProperty(String var1, Class<T> var2, T var3); String getRequiredProperty(String var1) throws IllegalStateException; <T> T getRequiredProperty(String var1, Class<T> var2) throws IllegalStateException; String resolvePlaceholders(String var1); String resolveRequiredPlaceholders(String var1) throws IllegalArgumentException; }
PropertyResolver的行为一:String getProperty(String var1)获取某个属性的值,第二个重点就是:String resolvePlaceholders(String var1);用配置的属性替换掉 ${}占位符
那我们看Spring启动时的Environment实例:
复制代码
1return (ConfigurableEnvironment)(this.webApplicationType == WebApplicationType.SERVLET ? new StandardServletEnvironment() : new StandardEnvironment());
在容器中启动是StandardServletEnvironment,main方法启动是StandardEnvironment;
其实呢,StandardServletEnvironment继承了StandardEnvironment,多了ServletConfig和ServletContext两个PropetySource。
而StandardEnvironment 本身就集合了System.getProperties() 和System.getEnv();
这样我们可以明白,在启动的时候我们会新建一个StandardServletEnvironment的环境实例,里面有我们的System配置和Servlet配置。
最后
以上就是漂亮牛排最近收集整理的关于【spring设计思想】第2集Environment解析的全部内容,更多相关【spring设计思想】第2集Environment解析内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复