Spring MVC servlet上下文中的变量?

时间:2013-12-26 20:40:09

标签: xml spring spring-mvc environment-variables servletconfig

对于Spring MVC项目,我希望减少在servlet上下文中切换服务器,路径等时的错误和时间。

有没有办法在servlet上下文中存储变量(即servlet-context.xml)?

示例

VARIABLE用于在myDataSource中切换服务器URL,用户和密码

VARIABLE = "GOOGLE" // Server type: GOOGLE, YAHOO, BING. This will switch the server url, user, and password in myDataSource

<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.**VARIABLE**.url}" />
    <beans:property name="username" value="${jdbc.**VARIABLE**.user}" />
    <beans:property name="password" value="${jdbc.**VARIABLE**.pw}" />
</beans:bean>

2 个答案:

答案 0 :(得分:1)

也许我误解了你的问题,但我对

的回答
  

有没有办法在servlet上下文中存储变量(即   servlet的context.xml中)?

是“否”。这些上下文配置文件是静态的。

您应该做的是使用个人资料。请参阅herehere.

答案 1 :(得分:0)

在XML中实现它的方法是修改web.xmlservlet-context.xml

<强>解决方案:

web.xml中为context-param添加新的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之后定义的bean导致错误。因此,我不得不将java bean移动到新文件并在配置文件定义之前导入它们。

<beans:import resource="servlet-beans.xml"/>