0

Spring MVC プロジェクトでは、サーブレット コンテキストでサーバー、パスなどを切り替える際のエラーと時間を削減したいと考えています。

変数をサーブレット コンテキスト (つまり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-context.xml) に格納する方法はありますか?

は「いいえ」です。これらのコンテキスト構成ファイルは、静的であることを意図しています。

代わりにすべきことは、プロファイルを使用することです。こことここを参照してください。

于 2013-12-26T20:57:20.897 に答える
0

XML で実装する方法は、web.xmlとを変更することservlet-context.xmlです。

解決:

に新しいfor をweb.xml追加します。これは、プロファイル セレクタとして使用されます。context-paramspring.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"/>
于 2013-12-27T19:20:34.230 に答える