問題タブ [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.
java - SpringBootTest 構成で無視される Bean
次の構造があります。
メイン構成クラス。
そして、2 つの別個の構成クラス。
テストは次のとおりです。
この構造では、BeanEtcDao
とのテスト定義SomeBean
は無視され、これらの Bean のメイン コンテキスト定義が使用されます (からMainApplication.class
)。@SpringBootTest
しかし、これらの個別の構成をlikeに含めると、@SpringBootTest(classes = {ConfigA.class, ConfigB.class})
適切に機能します。@Include
これらの個々の構成クラスの Bean を初期化できませんか? MainApplication.class
または、犯人はそれらと一緒に含めることですが、そこから他の構成が必要なので、この方法で実装する必要がありました。
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
バインドされた未解決のプレースホルダーで例外をスローする動作を保持する方法はありますか?