使用 Spring
<beans profile="test">
<context:property-placeholder
location="classpath*:common/*.properties, classpath*:test/*.properties" />
</beans>
<beans profile="production">
<context:property-placeholder
location="classpath*:common/*.properties, classpath*:production/*.properties" />
</beans>
</beans>
这样就实现了通过 profile 标记不同的环境,接下来就可以通过设置 spring.profiles.default 和 spring.profiles.active 这两个属性来激活和使用对应的配置文件。default 为默认,如果没有通过 active 来指定,那么就默认使用 default 定义的环境。
这两个属性可以通过多种方法来设置:
在 web.xml 中作为 web 应用的上下文参数 context-param;
在 web.xml 中作为 DispatcherServlet 的初始化参数;
作为 JNDI 条目;
作为环境变量;
作为 JVM 的系统属性;
在集成测试类上,使用 @Active
Profiles 注解配置。
前两者都可以在 web.xml 文件中设置:
<?xml version="1.0" encoding="UTF-8"?>
<display-name>Archetype Created Web Application</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath*:/applicationContext*.xml
</param-value>
</context-param>
<context-param>
<param-name>spring.profiles.default</param-name>
<param-value>development</param-value>
</context-param>
<context-param>
<param-name>spring.profiles.active</param-name>
<param-value>development</param-value>
</context-param>
<servlet>
<servlet-name>appServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>spring.profiles.default</param-name>
<param-value>development</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
激活指定的环境,也可以通过 JVM 参数来设置,可以在 tomcat 的启动脚本中加入以下 JVM 参数来激活:
-Dspring.profiles.active="production"
在程序中,也可以通过 @Profile("...") 对某些资源进行注解,这样只有当选择对应的环境时,才会产生对应的 bean,如:
评论