問題タブ [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 プロファイル Bean と DependsOn アノテーション
私のために働くコード:
データベースの構成の一部は次のようになります:
構成は 2 つの排他的 Bean を表します。1 つは「dbClean」プロファイルが存在する場合に作成され、もう 1 つは存在しない場合に作成されます。我慢して、コードの重複を忘れてください。
別の構成が Quartz 構成を管理します。
上記は魅力のように機能します。問題は、Quartz 構成が Flyway autowired Bean を使用していないことです。この Bean が Quartz スケジューラーよりも前に作成されていることだけが必要です。
したがって、理想的な構成は次のようになります。
データベース部分:
クォーツ部分:
問題は、最後の構成が機能しないことです。どちらのフライウェイ Bean も作成されません。そして、私には理由がわかりません。xml 構成を使用していたときよりも前に、異なるプロファイルで同じ名前の 2 つの Bean を持つことが可能だったことを覚えています。そしてそれはうまくいきました。ここで何か間違ったことをしていますか、それとも Spring 自体のバグでしょうか? 通常、私は自分で Spring をデバッグしますが、Spring の @Configuration ロジックを含む部分は、現時点では時間を無駄にできない未解決のフィールドです。
java - 春に特定のプロファイルを持つ実装者を自動配線する方法は?
コードでデモンストレーションしましょう:
どうすれば動的に (到着するすべてのリクエストで) スプリングを作成して、プロファイルに従って上記のクラスの 1 つを自動配線できますか? 配線時にそのようなことをすることさえ可能ですか?
背景: サーバー側のバージョン管理メカニズムを実装するための良い方法を探しています。リクエストがバージョン 'V1' に属している場合、'V1' プロファイルを持つクラスを自動配線したい、またはその逆を行いたい。(現在、私はリストを自動配線し、それらを繰り返して適切なバージョンを見つけています)。
spring - Spring プロファイル: リポジトリ Bean を自動配線できません
作成した Spring プロファイルで JUnit テストを実行しようとすると問題が発生します。実際には、オートワイヤーできないリポジトリ Bean を除いて、プロファイルは正常に機能します。
これは、spring-integration-context.xml で永続性を構成するために使用するコードのフラグメントです。
したがって、永続化構成全体を「Beans profile」要素でラップするだけで十分だと思いました。
さて、私のJUnitテストクラスから:
そして、 ApplicationTest クラスに次の注釈を付けています。
@ImportResource("classpath:/META-INF/spring/integration/spring-integration-context.xml")
しかし、テストを実行すると、次の例外が発生します。
私のテストクラスでは、ScheduleLoader は以前に自動配線されていることに注意してください。実際、その Bean は開発プロファイル内にもあります。@ActiveProfiles("dev")アノテーションなしでテストを実行しようとすると 、予想どおり、 ScheduleLoader failed autowiringによって例外がスローされます(dev プロファイルにのみあるため)。
では、Spring プロファイルと永続化構成の問題は何ですか?
PD: リポジトリとエンティティ クラスがその中にあることを確認しました
guiatv.persistence.*
パッケージ。
ちなみに、私はSpring Bootを使っているので、@ActiveProfiles("dev") アノテーションを書く代わりに、application.propertiesファイルに spring.profiles.active=devを追加して動作させることも試みました。
アップデート
また、すべての「Beans プロファイル」要素を削除して、すべてのコンポーネントがルート「Beans」要素の子になるようにすると、@ActiveProfiles("dev") アノテーションなしまたは @ActiveProfiles( 「デフォルト」) 注釈。
java - プロファイルに従ってSpring xml構成をロードします
次のようにxmlファイルからアプリケーションコンテキストをロードできることを知っています:
しかし、私の場合は無関係です。
内部ではapplicationContext.xml
プロファイルを使用します。
プロファイルに従ってコンテキストをロードするにはどうすればよいですか?
spring - Spring プロファイルを使用した web.xml フィルターの有効化/無効化
2 つの異なる永続化 API を使用できる Spring アプリケーションがあります。
- 春のデータ JPA
- 春のデータNeo4j
Spring Data JPA を使用する場合、「web.xml」で「OpenEntityManagerInViewFilter」を宣言して遅延読み込みを行う必要があります。
問題は、Spring Data Neo4j を使用しているときにこのフィルターを有効にしたままにできないことです。有効のままにすると、次のランタイム エラーが発生します。
Spring プロファイルで使用するデータベースを選択したい (例:spring.profiles.active=relational-database
またはspring.profiles.active=graph-database
)。
質問: プロファイルが "relational-database" の場合に "OpenEntityManagerInViewFilter" を有効にし、プロファイルが "graph-database" の場合に無効にするにはどうすればよいですか?
ありがとう!
関連する質問:
- web.xml でフィルターを条件付きで有効/無効にする方法ですが、使用していません
DelegatingFilterProxy
。
spring-boot - Spring Boot プログラムによるプロファイルの設定
スプリング ブート アプリケーションでアクティブなプロファイルを設定する方法。このアプリケーションは、スタンドアロンの Tomcat にデプロイされます。
2 つのプロパティ ファイル application-{profile}.properties があります。
私のアプリケーションクラス
Tomcat を埋め込んでアプリを実行すると、dev プロファイルがアクティブに設定され、正常に動作します。しかし、スタンドアロンのTomcatにデプロイすると. それは動作しません。
configureメソッドでアクティブなプロファイルを設定しようとしました。しかし、コンテキストから環境を取得すると、null ポインター例外が発生します。
アクティブなプロファイルの設定方法に関するヘルプ。