Переменные в контексте сервлета Spring MVC?

Для проекта Spring MVC я хочу уменьшить количество ошибок и количество времени при переключении серверов, путей и т. Д. В контексте сервлета.

Есть ли способ хранить переменные в контексте сервлета (т.е. servlet-context.xml)?

пример

VARIABLE используется для переключения URL сервера, пользователя и пароля в myDataSource

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 ответа

Решение

Может быть, я неправильно понимаю ваш вопрос, но мой ответ на

Есть ли способ хранить переменные в контексте сервлета (например, servlet-context.xml)?

нет". Эти файлы конфигурации контекста должны быть статическими.

Вместо этого вам следует использовать профили. Смотрите здесь и здесь.

Способ его реализации в 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 вы оберните бобы профилем. Здесь я даю профиль разработки и тестирования для каждого соединения с базой данных.

<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>


На этом этапе компоненты, определенные после того, как компоненты профиля вызвали ошибки. Таким образом, мне пришлось переместить Java-бины в новый файл и импортировать их до определения профиля.

<beans:import resource="servlet-beans.xml"/>
Другие вопросы по тегам