問題タブ [spring-profiles]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - contextLoadListener で切り替える方法は、スプリング プロファイルに依存します。
アプリケーションを開始する前にコードを実行する必要があります。
次のリスナーを作成しました(web.xmlに登録されています):
test
プロファイルがアクティブな場合にのみリスナーが呼び出されることを期待しています。
しかし、それは常に呼び出します。この動作を修正するにはどうすればよいですか?
java - WebApplicationInitializer 内で実際のスプリング プロファイルを取得する
web.xml に次のエントリがあります。
および次の WebInitializer:
テスト プロファイル ( mvn clean install jetty:run
-Dspring.profiles.active=test) を使用してアプリケーションを起動すると、if ステートメントが実行され、結果がコンソールに表示されます。
明示的なプロファイル () なしでアプリケーションを起動すると、mvn clean install jetty:run
実行は if ステートメントに入りません。それは私の側から間違っています。PS実行しようとしましrootContext.getEnvironment().getDefaultProfiles()
たが、値を持つ単一の要素配列を返します(私の意見に従うdefault
べきです)test
これを修正する方法は?
java - java configを使用してスプリングプロパティ(プロファイルなど)を初期化する正しい方法は何ですか?
フィルタリングされている spring.profiles.active という名前のキーを含む initParameters.properties という名前のファイルがありますが、Spring はまだこのプロパティを認識していないため、それだけでは十分ではありません。
私はAbstractAnnotationConfigDispatcherServletInitializerを WebAppInitializer として使用して
いますが、その重要な部分は次のとおりです。
オプション1:
オプション 2:
どちらの方法でも機能しますが、一方がシステム プロパティであり、もう一方が initParameter であることを除けば、それらの違いは何なのかわかりません。
多くの場合、アプリケーションの起動中にシステム プロパティ -Dspring.profiles.active=someProfile を設定すると、.properties ファイルのフィルタリングも含めてすべてが上書きされるので、問題ありません。
私はいくつかの説明、賛否両論を求めてインターネット全体を探していましたが、何も見つかりませんでした。
また、.properties ファイルから直接プロパティについてスプリングに通知する方法がある場合は、その方法も知りたいです (つまり、setInitParameters の部分をスキップします)。Spring Boot は自動的にそれを検出すると思いますが、私はそれを使用していないので、Spring にそのようなものがあるかどうか疑問に思っていました。御時間ありがとうございます。
java - junit テストで RedisHttpSessionConfiguration を無効にする
私は and を使用spring-boot
しspring-session
て、単純な REST API を構築しています。本番アプリケーションでは redis-session 実装を使用する必要がありますが、テストではデフォルトの (非 redis) spring-session を使用する必要があります。
ただし、 maven 依存関係がプロジェクトで宣言されている場合、spring-boot は、注釈がテスト構成のどこにもない状態でspring-boot-starter-redis
自動的に を作成します。org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration
@EnableRedisHttpSession
私のセットアップ
アプリケーション コード:
テスト:
junit テスト内で redis セッションの自動構成を無効にするにはどうすればよいですか?
テスト中のスタック トレース:
編集
私はそれを考え出した。RedisHttpSessionConfig
構成に注釈がないにもかかわらずテストでロードされる理由EnableRedisSession
は、spring-boot-starter-web に付属するこの自動構成です: SessionAutoConfiguration
したがって、テストでは、これは自動構成から除外する必要があるクラスです。
spring-boot - Spring Boot、プロファイルを使用してファイルをロード
spring-boot プロファイルを使用してさまざまな環境のプロパティ値を変更しましたが、同じアプローチを使用してさまざまなリソース ファイルをロードしたいと考えています。
アクティブなプロファイルが dev で、それ以外の場合は prod_queries.xml の場合、Spring-Boot に dev_queries.xml をロードさせるにはどうすればよいですか。アクティブなプロファイルを確認できることはわかっていますが、この状況を処理するための特定のロジックを追加しないというのが私の考えです。
java - 同じテストを異なるスプリング プロファイルで実行するようにキュウリを構成することは可能ですか?
さまざまなテクノロジでトライアルを実行しているアプリケーションがあります。各テクノロジーに実装されたインターフェイスのセットがあり、Spring プロファイルを使用して実行するテクノロジーを決定します。各テクノロジーには、アクティブなプロファイルで注釈が付けられた独自の Spring Java 構成があります。
どのプロファイルがアクティブかを定義するキュウリ テストを実行しますが、これにより、別のプロファイルをテストするたびに文字列を手動で変更する必要があり、それらすべてに対して自動テストを実行することができなくなります。プロファイルのセットを提供するキュウリにはとにかくありますか?テストはそれらのそれぞれに対して1回実行されますか?
ありがとう!
java - Maven と spring-boot: spring-boot:repackage でプロファイルを指定する方法
spring-boot を使用すると、プロファイルを作成し、アクティブなプロファイルに応じて異なる構成ファイルを使用できることがわかりました。たとえば、次のコマンド:
"mvn spring-boot:run -Drun.profiles=default,production"
"application-default.properties" と "application-production.properties" の両方で定義された設定を使用して私の spring-boot アプリケーションを実行し、2 番目のファイルの設定が最初のファイルで定義された同じ設定をオーバーライドします (たとえば、db 接続)設定)。これらすべてが現在うまくいっています。
ただし、次のコマンドを使用して、Spring Boot アプリケーションをビルドし、実行可能な jar を生成したいと考えています。
"mvn package spring-boot:repackage".
このコマンドは、自己完結型の実行可能な jar を完全に生成します。問題は、以前のコマンドでアクティブなプロファイルを指定するにはどうすればよいかということです。利用した
"mvn package spring-boot:repackage -Drun.profiles=default,production"
しかし、それは機能していません。
java - スプリング プロファイル: どちら要素を解析する必要がありますか?
春のコンテキストで次の構成を使用しています。
prof1およびprof2プロファイルがアクティブ化さ<beans>
れていることを考慮して、どの要素を解析するかという問題があります。
常にこれを選択しているように見えます<beans profile="prof1" >
が、別のものを選択しない理由がわかりません<beans profile="!prof1" >
。<beans>
感嘆符なしで常に選択することを伝えてもいいですか?