我想我理解CDI是如何工作的,为了深入研究它,我想尝试用一些真实世界的例子.我被困在一件事情,我需要你的帮助才能让我理解.在这方面,我非常感谢你的帮助.
我有自己的工作流框架使用Java反射API和XML配置开发,其中基于特定类型的"source"和"eventName",我加载适当的Module类并在其上调用"process"方法.一切都在我们的项目中运作良好.
我对CDI功能很兴奋,并希望尝试使用工作流框架,我计划注入Module类,而不是使用Reflection等加载它们...
只是为了给你一个想法,我会尽量在这里保持简单.
"Message.java"是一种带有"Source"和"eventName"的Transfer Object,因此我们可以适当地加载模块.
public class Message{
private String source;
private String eventName;
}
Run Code Online (Sandbox Code Playgroud)
模块配置如下
<modules>
<module>
<source>A</source>
<eventName>validate</eventName>
<moduleClass>ValidatorModule</moduleClass>
</module>
<module>
<source>B</source>
<eventName>generate</eventName>
<moduleClass>GeneratorModule</moduleClass>
</module>
</modules>
Run Code Online (Sandbox Code Playgroud)
ModuleLoader.java
public class ModuleLoader {
public void loadAndProcess(Message message){
String source=message.getSource();
String eventName=message.getEventName();
//Load Module based on above values.
}
}
Run Code Online (Sandbox Code Playgroud)
题
现在,如果我想通过CDI实现相同的注入模块(在ModuleLoader类中),我可以使用@Produce方法编写Factory类,这可以做到这一点.但我的问题是,
a)如何将Message Object传递给@Produce方法,以便根据eventName和source进行查找?
你能给我一些建议吗?
提前致谢.
| 归档时间: |
|
| 查看次数: |
6706 次 |
| 最近记录: |