問題タブ [spring-boot-configuration]

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.

0 投票する
0 に答える
668 参照

java - SpringBootTest 構成で無視される Bean

次の構造があります。

メイン構成クラス。

そして、2 つの別個の構成クラス。

テストは次のとおりです。

この構造では、BeanEtcDaoとのテスト定義SomeBeanは無視され、これらの Bean のメイン コンテキスト定義が使用されます (からMainApplication.class)。@SpringBootTestしかし、これらの個別の構成をlikeに含めると、@SpringBootTest(classes = {ConfigA.class, ConfigB.class})適切に機能します。@Includeこれらの個々の構成クラスの Bean を初期化できませんか? MainApplication.classまたは、犯人はそれらと一緒に含めることですが、そこから他の構成が必要なので、この方法で実装する必要がありました。

0 投票する
3 に答える
3682 参照

spring - Spring Boot 構成プロパティの未解決のプレースホルダー検証

次のように、解決できないプレースホルダーを含むアプリケーション構成が与えられた場合application.yml

注釈を使用する@Valueと、構成ファイルのプレースホルダーが検証されるため、この場合は次のようになります。

を取得しIllegalArgumentException: Could not resolve placeholder 'missing-placeholder' in value "${missing-placeholder}/whatever"ます。これは、値が によって直接設定されてAbstractBeanFactory.resolveEmbeddedValueおり、によってスローされた例外をキャッチするものが何もないためです。PropertyPlaceholderHelper.parseStringValue

ただし、スタイルに移行しようとすると@ConfigurationProperties、この検証が欠落していることに気付きました。たとえば、次の場合です。

例外はありません。PropertySourcesPropertyValues.getEnumerablePropertyコメントで例外をキャッチし// Probably could not resolve placeholders, ignore it here、無効な値を内部マップに収集することがわかります。以降のデータ バインディングでは、未解決のプレースホルダーはチェックされません。

@Validatedクラスとフィールドにとアノテーションを適用するだけで@Validは役に立たないことを確認しました。

ConfigurationPropertiesバインドされた未解決のプレースホルダーで例外をスローする動作を保持する方法はありますか?