0

对于 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>
4

2 回答 2

1

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

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

没有”。这些上下文配置文件是静态的。

您应该做的是使用配置文件。见这里这里。

于 2013-12-26T20:57:20.897 回答
0

在 XML 中实现它的方式是修改web.xmland 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"/>
于 2013-12-27T19:20:34.230 回答