使用 spring EL 获取 Spring 配置文件名称
Get Spring profile name with spring EL
考虑一个基于 Web 的应用程序 spring 4. spring bean 配置文件在 web.xml 中定义,例如:
<context-param>
<param-name>spring.profiles.active</param-name>
<param-value>prod,edb,cas</param-value>
</context-param>
现在考虑一个 bean 在 spring-applicaiton-context.xml 中定义为
<util:properties id="myPolicy"
location=
"classpath:/configs/${ACCESS-ACTIVE-PROFILE-SECOND-ITEM}/my-policy.properties" />
我是否可以访问活动配置文件列表和 select 第二个(在我的示例 edb 中)。通过这种方式,我可以在活动配置文件更改时动态加载我的资源。
这可能有帮助!当 Web 应用程序以以下代码启动时,我可以获得活动配置文件:
public void contextInitialized(ServletContextEvent event){
ApplicationContext applicationContext = WebApplicationContextUtils
.getWebApplicationContext(event.getServletContext());
String activeProfiles[] = applicationContext.getEnvironment().getActiveProfiles();
system.out.print(activeProfiles[1])
}
语法将是 "#{environment.activeProfiles[1]}"
- 但是,它在上下文生命周期中还为时过早;在这种情况下,在评估 SpEL 之前未设置 activeProfiles。
怎么了
<beans profile="foo">
<util:properties id="myPolicy"
location="classpath:/configs/foo/my-policy.properties" />
</beans>
<beans profile="bar">
<util:properties id="myPolicy"
location="classpath:/configs/bar/my-policy.properties" />
</beans>
?
其实我刚发现
"#{environment.getActiveProfiles()[1]}"
有效 - 显式调用 getter 会导致加载 属性。
考虑一个基于 Web 的应用程序 spring 4. spring bean 配置文件在 web.xml 中定义,例如:
<context-param>
<param-name>spring.profiles.active</param-name>
<param-value>prod,edb,cas</param-value>
</context-param>
现在考虑一个 bean 在 spring-applicaiton-context.xml 中定义为
<util:properties id="myPolicy"
location=
"classpath:/configs/${ACCESS-ACTIVE-PROFILE-SECOND-ITEM}/my-policy.properties" />
我是否可以访问活动配置文件列表和 select 第二个(在我的示例 edb 中)。通过这种方式,我可以在活动配置文件更改时动态加载我的资源。
这可能有帮助!当 Web 应用程序以以下代码启动时,我可以获得活动配置文件:
public void contextInitialized(ServletContextEvent event){
ApplicationContext applicationContext = WebApplicationContextUtils
.getWebApplicationContext(event.getServletContext());
String activeProfiles[] = applicationContext.getEnvironment().getActiveProfiles();
system.out.print(activeProfiles[1])
}
语法将是 "#{environment.activeProfiles[1]}"
- 但是,它在上下文生命周期中还为时过早;在这种情况下,在评估 SpEL 之前未设置 activeProfiles。
怎么了
<beans profile="foo">
<util:properties id="myPolicy"
location="classpath:/configs/foo/my-policy.properties" />
</beans>
<beans profile="bar">
<util:properties id="myPolicy"
location="classpath:/configs/bar/my-policy.properties" />
</beans>
?
其实我刚发现
"#{environment.getActiveProfiles()[1]}"
有效 - 显式调用 getter 会导致加载 属性。