对于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>
答案 0 :(得分:1)
也许我误解了你的问题,但我对
的回答有没有办法在servlet上下文中存储变量(即 servlet的context.xml中)?
是“否”。这些上下文配置文件是静态的。
答案 1 :(得分:0)
在XML中实现它的方法是修改web.xml
和servlet-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"/>