在 XML 中实现它的方式是修改web.xml
and servlet-context.xml
。
解决方案:
在web.xml
添加一个新context-param
的 for spring.profiles.active
。这将用作配置文件选择器。
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/spring/root-context.xml
</param-value>
</context-param>
<context-param>
<param-name>spring.profiles.active</param-name>
<param-value>DEV-PROFILE</param-value><!-- profile name goes here -->
</context-param>
在中,servlet-context.xml
您将使用配置文件包装 bean。在这里,我为每个数据库连接提供了一个开发和测试配置文件。
<beans:beans profile="DEV-PROFILE">
<beans:bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<beans:property name="driverClassName" value="${jdbc.sqlserver.driver}" />
<beans:property name="url" value="${jdbc.dev.url}" />
<beans:property name="username" value="${jdbc.dev.user}" />
<beans:property name="password" value="${jdbc.dev.pw}" />
</beans:bean>
</beans:beans>
<beans:beans profile="TEST-PROFILE">
<beans:bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<beans:property name="driverClassName" value="${jdbc.sqlserver.driver}" />
<beans:property name="url" value="${jdbc.test.url}" />
<beans:property name="username" value="${jdbc.test.user}" />
<beans:property name="password" value="${jdbc.test.pw}" />
</beans:bean>
</beans:beans>
此时 bean 定义在 profile bean 之后导致错误。因此,我不得不将 Java bean 移动到一个新文件中,并在配置文件定义之前导入它们。
<beans:import resource="servlet-beans.xml"/>