Spring依存性注入を使用して次の問題を解決する方法を考えていました:
さまざまなタイプのリストがTransactions
あるので、それらに基づいてそれらを処理する必要がありますTransactionType
。だから私はそのようなものを持っているでしょTransactionController
うTransactionService
:
public class TransactionController {
private TransactionService transactionService;
public void doStuff(List<Transaction> transactions) {
for (Transaction transaction : transactions) {
// use the correct implementation of transactionService based on the type
transactionService.process(transaction);
}
}
}
public interface TransactionService {
void process(transaction);
}
Spring IoC を使用しない場合は、Simple Factory パターンを使用して Type 列挙型に基づいて実装を返します。
public class TransactionServiceFactory {
public TransactionService(TransactionType transactionType) {
// switch case to return correct implementation.
}
}
を注入して同じことを達成するにはどうすればよいTransactionService
ですか?@Qualifier
実装はに依存するため、注釈を使用できませんTransactionType
。ファクトリーメソッドを使用したインスタンス化を示す春のドキュメントの記事に出くわしましたが、それに引数を渡す方法がわかりません。
おそらく、Spring IoC では別の設計を使用する必要があると思います。私はいつも Simple Factory、Factory、Abstract Factory のパターンを使用してきたので、これを解決する別の方法が思い浮かびません…</p>
誰かが私のためにこれをフォーマットしてもらえますか? Android アプリはこれを行っていないようです。申し訳ありません。