String[] specifiedProfiles =
StringUtils.tokenizeToStringArray(
profileSpec,
BeanDefinitionParserDelegate.MULTI_VALUE_ATTRIBUTE_DELIMITERS);
//获取激活状态的 profile 配置 beans,通过”spring.profiles.active/
spring.profiles.default”在启动参数(-D),DispatcherServlet 的初始化参数,
web 应用上下文参数等设置,spring 将活动的 bean 信息注入到容器中,非活动的不注
入,用于不同环境的配置(profile 会注入名为 default 的配置)
if (!this.environment.acceptsProfiles(specifiedProfiles)) {
return;
}
}
例子:可配置多个活动的 profile,用“,”分割
<context-param>
<param-name>spring.profiles.active</param-name>
<param-value>dev,test</param-value>
</context-param>
spring 配置文件 profile 配置
名字可以配置多个,用,;分割例如 dev,;test,只要一个匹配,将直接返回
也可以在名字前加上!,表示取反,若活动 profile 包含此 profile,则不加载其下的
bean,若不包含,则反而加载
<beans profile=”dev”>
</beans>
如果配置的活动的 profile 名字跟 spring 配置文件中的 profile 名不同,则 spring
配置文件将不会加载到容器中
解析默认的 Element,共有 import,alias,bean,beans
不同的节点单独的方法解析,若是 beans,则递归解析
private void parseDefaultElement(Element ele,
BeanDefinitionParserDelegate delegate) {
if (delegate.nodeNameEquals(ele, IMPORT_ELEMENT)) {
importBeanDefinitionResource(ele);
}
else if (delegate.nodeNameEquals(ele, ALIAS_ELEMENT)) {
processAliasRegistration(ele);
}
else if (delegate.nodeNameEquals(ele, BEAN_ELEMENT)) {
processBeanDefinition(ele, delegate);
}
else if (delegate.nodeNameEquals(ele, NESTED_BEANS_ELEMENT)) {
// recurse