2017-08-16 7 views
0

マイクロソフトでは、当社のマイクロサービスインフラストラクチャを定義しています。私たちは私たちのサービスのためのBOMを定義する独自の "親"を作成しました。さらに、当社のサービスで使用できるいくつかの「スターター」プロジェクトと小さな図書館があります。 (例えば、サービスには、Kafkaの依存関係を含めるための「開始ストリーム」が含まれています)。スプリングブート - プログラムの自動構成を無効にする

ストリーミングユーティリティライブラリは、Kafkaセットアップ用の独自の自動構成を提供し、Kafkaの既定の自動構成を無効にする必要があります。これは簡単ですが、ライブラリを使用して「除外」を追加するすべてのマイクロサービスを要求することができます。

私が探しているのは、これをプログラマチックに行う方法で、各Webサービスに除外項目を追加する必要はありません。

私はこれがおそらくユニークな状況であると知っています。私がこれを行うことについて考えていた1つの方法は、spring.autoconfigure.excludeに除外を追加するEnvironmentPostProcessorをユーティリティライブラリに追加することでした。プロパティが既に存在する場合、除外を連結するのに十分なほどスマートにすることができます。

このタイプのことを行うよりエレガントな方法はありますか?

答えて

1

EnvironmentPostProcessorを使用してspring.auconfigure.excludeを修正しても問題ありません。

もう1つの方法は、org.springframework.boot.autoconfigure.AutoConfigurationImportSelectorをサブクラス化し、org.springframework.boot.autoconfigure.AutoConfigurationImportSelector#getExclusionsを上書きして、既に設定されている除外と追加する除外を組み合わせることです。

public class MyCustomSelector extends AutoConfigurationImportSelector { 
    @Override 
    protected Set<String> getExclusions(AnnotationMetadata metadata, AnnotationAttributes attributes) { 
    Set<String> exclusions = super.getExclusions(metadata, attributes); 
    exclusions.add("some.other.config.Configuration"); 
    return exclusions; 
    } 
} 

@Import(MyCustomSelector.class)で使用できます。

+0

デフォルトのセレクタをオーバーライドする場合、デフォルトではなくセレクタをインポートする@SpringBootApplicationのカスタムバリアントが必要であることを意味しますか? – Tyler

関連する問題