複数の相互に排他的なデータ ソースがあり、構成ファイルで定義されたプロパティに基づいて、どの実装をコントローラーに挿入/自動配線するかを構成したいと考えています。
私は @Qualifier に沿って何かを考えていますが、私は春の専門家ではないので、仕組みを理解できません。
その目的は、結果として生じる複雑な if/else を回避することです。
何か案は?
複数の相互に排他的なデータ ソースがあり、構成ファイルで定義されたプロパティに基づいて、どの実装をコントローラーに挿入/自動配線するかを構成したいと考えています。
私は @Qualifier に沿って何かを考えていますが、私は春の専門家ではないので、仕組みを理解できません。
その目的は、結果として生じる複雑な if/else を回避することです。
何か案は?
context:property-placeholder
とでトリックを実行できます@Qualifier
。
次のようになります。
app.properties
some.implementation=com.example.MyServiceImpl
春のコンテキストファイル
<context:property-placeholder
location="classpath:/app.properties"/>
<bean id="myService" class="${some.implementation}" />
コントローラ
@Autowired
@Qualifier("myService")
private MyService myService;
反対の解決策として、プロパティ ファイルの Bean ID に保存し、それを内部で使用できます。@Qualifier
@Qualifier("${some.implementation.bean.id}")
ただし、Spring 3.1+ を使用している場合は、おそらくプロファイルメカニズムを確認する必要があります。