CDIがどのように機能するかを理解したと思います.CDIを深く掘り下げるために、実際の例で使用してみたいと思います. 理解してもらうためにあなたの助けが必要なことが 1 つあります。この点であなたの助けに本当に感謝します.
Java リフレクション API と XML 構成を使用して独自のワークフロー フレームワークを開発しました。特定のタイプの「ソース」と「イベント名」に基づいて、適切なモジュール クラスをロードし、その上で「プロセス」メソッドを呼び出します。私たちのプロジェクトでは、すべてがうまく機能しています。
私はCDI機能に興奮し、リフレクションなどを使用してそれらをロードする代わりにモジュールクラスを注入することを計画しているワークフローフレームワークで試してみたいと思いました...
ここでは簡単に説明します。
「Message.java」は、モジュールを適切にロードできるように、「Source」と「eventName」を運ぶ転送オブジェクトの一種です。
public class Message{
private String source;
private String eventName;
}
モジュール構成は以下の通り
<modules>
<module>
<source>A</source>
<eventName>validate</eventName>
<moduleClass>ValidatorModule</moduleClass>
</module>
<module>
<source>B</source>
<eventName>generate</eventName>
<moduleClass>GeneratorModule</moduleClass>
</module>
</modules>
ModuleLoader.java
public class ModuleLoader {
public void loadAndProcess(Message message){
String source=message.getSource();
String eventName=message.getEventName();
//Load Module based on above values.
}
}
質問
ここで、CDI を介して同じものを実装してモジュールを (ModuleLoader クラスに) 挿入したい場合は、@Produce メソッドを使用して Factory クラスを記述できます。しかし、私の質問は、
a) Message オブジェクトを @Produce メソッドに渡して、 eventName と source に基づいてルックアップを行うにはどうすればよいですか?
提案をお願いできますか?
前もって感謝します。