createメソッドの引数の内容によってコンテナから取得するコンポーネントを変化させます。diconファイルに定義してください。null;}}引き続きBusinessLogicのほうですが、以下が最終版。コンストラクタインジェクションでConverterFactoryをDIするようにします。このようにすれば実行時動的にコンポーネントを切り替えれます。converter.convert(table);System.out.println(sql);}}diconファイルは以下のような感じ。BusinessLogicで作るコンポーネントは一種類。ConverterFactoryをコンストラクタインジェクションします。</component>まとめDIコンテナが登場してFactoryの出番が少なくなったとはいえ、上記のように動的にコンポーネントを選択しなければならない場合は、やはりFactoryの出番となります。本来、ConverterFactory#createメソッド内で各Converterクラスの生成を行うところを、DIコンテナからgetComponentしてます。これはコンテナで対象のコンポーネントをどのようなインスタンス管理をするかで、動きが変わってきます。Converterをsingletonで管理している場合は、毎回同一のインスタンスが返されます。厳密にはFactoryは生成することが責務なので、prototypeで各Conveterクラスを管理させたほうがよいかもしれません。prototypeにしてもsetterインジェクションで各ConverterをDIしてしまうと、createメソッドは毎回同じインスタンスを返してしまいますので、createメソッド内でgetComponentする必要があります。いうか、私の場合は基本的にはそのようにするようにしています。name="addClassPattern"><arg>"jp.xet.tutorial.s2.converter"</arg><arg>".*"</arg></initMethod></component>以上、ご参考までに。Sourcingを学ぶための教材ServiceとDCIについて月別アーカイブはてなブログをはじめよう!j5ik2oさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。