問題タブ [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 - Springで現在のアクティブ/デフォルトの環境プロファイルをプログラムで取得するにはどうすればよいですか?
現在のさまざまな環境プロファイルに基づいて、さまざまなロジックをコーディングする必要があります。
Spring から現在アクティブなデフォルトのプロファイルを取得するにはどうすればよいですか?
spring - PropertiesPlaceholderConfigurerサブクラスはアクティブなSpringプロファイルを検出できますか?
構成ファイルには特定の形式があります。複数のファイル(つまり、dev.properties、uat.properties、prod.properties)を使用する代わりに、すべての値を1つのファイルに保存しますが、環境ごとにプレフィックスで区切ります。例えば:
SERVICE_PORT = 9800
DEV_SERVICE_PORT = 7800
UAT_SERVICE_PORT = 6600
これらの値を検索する既存のクラス(PropertyPlaceholderConfigurerのサブクラス)があり、実行中のIPアドレスに基づいてresolvePlaceHolder()内に追加するプレフィックスを決定します。つまり、特定のIP範囲では、DEV_プレフィックスを使用します。 UAT_プレフィックスを使用します。次に、これらの値は他のBeanに渡されます。場合によっては、コンテキストxmlを使用し、一部のBeanコンストラクターで@ Value${}アノテーションを使用します。プレフィックスの使用は透過的であるため、他のすべての構成はSERVICE_PORTを使用します(例では)
これを変更して、IPを使用する代わりに、アクティブなSpringプロファイルを検出するようにします。web.xmlには、環境のタイプを示すjavaSystemプロパティを検出するカスタムApplicationContextIniitalizerがあります。
私が抱えている問題は、resolvePlaceHolder()が呼び出された時点で、アクティブなプロファイルがまだ存在しないように見えることです。アクティブなプロファイルを検出するために私が行っていることは次のとおりです。
- StandardEnvironmentのインスタンスを作成します
- getActiveProfiles()を呼び出す
(2)常に空の配列を返すようです。これは、Springプロファイルがアクティブ化される前にプロパティプレースホルダーの解決が行われることを意味します。これは正しいです??
Beanの作成、プロパティファイルのロードなど、Springコンテキストのロード中の他のイベントに関連して、アクティブなプロファイルはいつ設定されますか?
resolvePlaceHolder()が呼び出されたときにアクティブなプロファイルを検出することは可能ですか?代わりに別のクラスを拡張する必要がありますか?
java - プロファイルがアクティブでない場合のBean定義を含める
私のアプリケーションでは、いくつかのプロファイルを使用して、特定のBeanを自動配線の対象にします。私が見逃しているのは、特定のプロファイルがアクティブでないときにBeanを自動配線の対象にする可能性です。
私が考えたそれを行うための最良の方法は次のようなものです:
- {A、B、C、D}など、考えられるすべてのプロファイルのリストがあるとします。
- 特定の実行に対してアクティブなプロファイルは{A、C}です。
- 私がしていることは、アクティブではないすべての可能なプロファイルに対して人工的なプロファイルを作成することです。この例では、{not_B、not_D}プロファイルを作成します。
- 非アクティブなプロファイルに基づいてアクティブにしたいBeanは
X
、プロファイルに対してアクティブにしますnot_X
。私の場合、プロファイルBがアクティブでないときに、Beanを自動配線の対象にしたい場合は、それらに注釈を付けます。@Profile("not_B")
ただし、このソリューションには、考えられるすべてのプロファイルに関する事前の知識が必要です。
より良い解決策を思いつくことができますか?
java - 春のプロファイル グループ
実行したいプロファイルを指定できるアプリケーションがあります。しかし、これらのプロファイルを資格情報、アプリケーションのパフォーマンス、メモリ印刷、アプリケーションの動作などにグループ化したいとも考えています。次のプロファイルを実行できます
しかし、私はそれを次のように初期化することを好みます
また
これは、 How to set active spring 3.1 environment profile via a propertyes file and not via an env variable or system property のようなカスタム コードを記述せずに実現でき ます。これらをプロパティ ファイルから、または spring-xml 構成内でロードできても問題ありません。spring 3.1 で xml のみの構成を使用しています。
java - rooプロジェクトでjavax.persistence.Table@Tableアノテーションを使用して、Maven(またはSpring)を使用してビルドプロファイルからスキーマを設定するにはどうすればよいですか?
タイトルに書かれていることとほぼ同じです。@Tableアノテーションがビルド時に使用するスキーマをmaven(またはroo)に管理させたいです。
私は試した
しかし、これはMavenが機能することを意図した方法ではないという結論に達しました。
spring - スプリング プロファイル変数の設定
と の 2 つの Spring プロファイルがdev
ありtest
ます。サーバー環境でアクティブなプロファイルを設定したいのですが、コードで設定したくないので、アプリケーションをデプロイするたびに、サーバーのプロファイルに基づいてプロファイルが読み込まれます。どうやってやるの?
spring - Spring プロファイル、コードベースの構成、および JNDI
新しい Spring 3.x コード ベースの @Configuration スタイルに移行しています。ここまではうまくいきましたが、C3p0 接続プール @Profile("standalone") の代わりに @Profile("production") を追加して JNDI データ ソースを選択しようとすると、次のようになります。
もちろん、詳細はたくさんありますが(参考のために以下にいくつか含めました)、私の質問は次のとおりです。
ありがとう、
詳細:
- XML と同じ構成が正常に機能し、
- web.xml は、AppConfig.class で構成されたルート コンテキストと、WebConfig.class で構成されたサーブレット コンテキストを指します。
- AppConfig には @Import(SomeConfig.class) があり、サービス レイヤー プロジェクトから構成をプルします。依存関係は Maven によって配線されます。
- SomeConfig クラスには、C3p0 データソースに @Profile("standalone") があります。
- AppConfig クラスには、JNDI データソースに @Profile("production") があり、web.xml は spring.profiles.default=production を定義します。
編集:解決済み
プロファイルを適切な場所に移動しました。現在、それらは同じファイルと同じプロジェクトにあります。
spring - スプリングの spring.profiles.active と組み合わせて、アクティブなプロファイルをスプリングに追加する方法
web.xml spring.profiles.active を介していくつかのスプリング プロファイルを有効にしていますが、これは展開チームがプロファイルをアクティブ化する方法であるため、そのままにしておきたいと思います。さらに、プロパティ ファイルの存在に基づいて、さらにいくつかのプロファイルを有効にしたいと考えています。だから私は ApplicationContextInitializer を追加しました
しかし、Spring は spring.profiles.active コンテキスト パラメータを無視し、メイン プロファイルをロードしません。
誰もそれを行う方法を知っていますか?
ServletContextListener を追加して、プロファイルを spring.profiles.active パラメータに追加できると思いますが、これはちょっと見苦しいと思います。
spring - 統合テストでの Spring @ActiveProfile の使用
@Profile Spring アノテーションを使用して、組み込み、スタンドアロン、およびコンテナー管理のデータ ソースを選択しています。「埋め込み」を選択するために、適切なプロファイルをアクティブにするように統合テストに注釈が付けられます。
問題は、'@ActiveProfiles' を TestConfigWrapper に移動したいのですが、これを行っても取得されず、アプリケーション コンテキストが DataSource をロードしません。
これは、すべての統合テストに @ActiveProfile で注釈を付ける必要があることを意味します。これは事実上、統合テストのボイラープレートになり、将来のリファクタリングを簡単に妨げる可能性があることを意味します。
Java configを使用してこれを行う方法はありますか?