Springブートには、設定ファイルで提供されているクラス名とコンストラクタのプロパティとの依存関係を挿入する方法がありますか?プロパティに基づくSpring-Inject依存関係
例えば、私は、共通のインタフェースの2つのバージョン、,FileStoreA
およびFileStoreB
を持っています。 application.yml
ファイルでこれらのうちどれを使用するかを定義できます。
は、私はこのような何かを行うことができます知っている:
は@Value("${fileStore.class}")
private String fileStoreClassName;
@Bean
public IFileStore fileStore() {
switch(fileStoreClassName) {
case "FileStoreA":
return new FileStoreA();
case "FileStoreB":
return new FileStoreB();
}
}
しかしこれは本当にハック感じています。私はまた手動で抽出し、それらに必要なパラメータを供給する必要があります。
私は理想的には、クラス名に基づいて使用するかどうかを判断することができ、特定のパラメータを指定することもできますので、3番目のFileStore
を追加すると、代わりにクラス名に使用する必要があります。
「クラス名に基づいて使用するかどうかを判断できます」と言うと、それは何ですか'?これらのオブジェクトを自動配線していますか? FileStoreをどのように使用していますか? – robjwilkins
うん。基本的に私は '@Autowired IFileStore fileStore'を基本クラスの実装にかかわらず、実際に直接使う必要があります。 'FileStore'の例は基本的な"ファイル "アクセスのための' get() '、' save() '、' has() 'の3つの関数を持っています(ファイルシステム上の実際のファイルではないかもしれません)。 – samanime