我想我了解 CDI 的工作原理,为了深入研究它,我想尝试将它与现实世界的示例一起使用。我被一件事困住了,我需要你的帮助才能让我理解。我非常感谢您在这方面的帮助。
我有自己的工作流框架,使用 Java 反射 API 和 XML 配置开发,其中基于特定类型的“源”和“事件名称”我加载适当的模块类并在其上调用“过程”方法。在我们的项目中一切正常。
我对 CDI 功能感到兴奋,并想尝试使用工作流框架,我计划在其中注入模块类,而不是使用反射等加载它们......
只是为了给你一个想法,我会尽量在这里保持简单。
“Message.java”是一种Transfer Object,它带有“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>
模块加载器.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 方法编写工厂类,它可以做到这一点。但我的问题是,
a) 如何将 Message Object 传递给 @Produce 方法以根据 eventName 和 source 进行查找?
你能给我一些建议吗?
提前致谢。