0

プロパティが設定されている場合に呼び出したい Java EE データソースがあります。true の場合、この Java EE データソースのみを使用するように、システム プロパティまたは vm 引数を設定できますか。Spring はサーバーの起動時にこの jndi データソースへの接続を試みますが、この接続が確立されるタイミングを制御する必要があります。したがって、特定の状況では、Spring はデータソース "myDataSource" への接続を試みるべきではありません。これが私のコンテキストファイル内の設定です:

<jee:jndi-lookup id="myDataSource" jndi-name="jdbc/mydb"
        resource-ref="true" expected-type="javax.sql.DataSource" />

これを制御するためにスプリング式を使用できますか:

http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/expressions.html

ここで受け入れられた答えを読む:

Spring config 内の条件ステートメント vm 引数を使用して、jndi データソースを使用する必要があるかどうかを示すことができますか?

4

3 に答える 3

1

これは、 Spring プロファイルの良い例のようです。

プロファイルに入れて、<jee:jndi-lookup>必要なときにのみアクティブにする必要があります。

次に、組み込みのシステム プロパティ ( spring.profiles.active) を使用して必要なプロファイルを有効にするか、カスタム プロパティの存在に基づいてアプリケーション コンテキストを初期化するときに手動で有効にすることができます (Web アプリケーションがある場合は、ApplicationContextInitializerアプリケーション コンテキストをカスタマイズするために使用する必要があります)。初期化)。

于 2013-06-28T13:30:32.530 に答える
1

1 つの方法として、Spring Bean プロファイルを使用し、特定のプロファイルがアクティブなときにデータソース Bean がアクティブになるように設定する方法があります。

<beans profile="myprofile">
<jee:jndi-lookup id="myDataSource" jndi-name="jdbc/mydb"
        resource-ref="true" expected-type="javax.sql.DataSource" />
</beans>

このプロファイルをアクティブ化するには複数の方法があります。Web アプリケーションがある場合は、次の方法でアクティブ化できます。

<servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>spring.profiles.active</param-name>
        <param-value>myprofile</param-value>
    </init-param>
</servlet>
于 2013-06-28T13:31:05.497 に答える
1

あなたが望むのはスプリングプロファイルだと思います。それらは次のように使用されます。

<beans profile="dev">
    <!-- ... -->
</beans>
<beans profile="prod">
    <jee:jndi-lookup id="myDataSource" jndi-name="jdbc/mydb" />
</beans>

次に、システム プロパティで 1 つ以上のプロファイルを有効にします-Dspring.profiles.active=dev。これは春の 3.1 で利用可能になりました。

于 2013-06-28T13:33:10.567 に答える