我对JEE CDI非常陌生,但是昨天尝试了一半来找到问题的解决方案。使用生产者和多态性添加一个有状态bean,并在JEE中使用CDI
我有一个控制器类,当调用启动时,应根据参数使用生产者注入一个有状态bean。这个提到的有状态bean本身包含一个注入的bean本身。
说实话,不知道这是否在所有工作,任何反馈意见表示高度赞赏=)
下面是一些伪代码,应该帮助明白我想要做的(基于OIN https://docs.jboss.org/weld/reference/1.0.0/en-US/html/producermethods.html)。可能我现在已经搞砸了很多东西......但我无法找到一个例子来说明这种问题如何解决,或者我无法理解这个问题=/
控制器(主要服务)
@Singleton
@Startup
public class Controller
{
private IEngine engine;
@PostConstruct
private void startup(int typeID)
{
Factory f = new Factory();
engine = f.getEngine(typeID)
}
}
厂
public class Factory
{
@Produces
public IEngine getEngine(int typeID)
{
if(typeID==1)
{
return new EngineA();
}
else
{
return new EngineB();
}
}
IEngine接口多态性
public interface IEngine
{
void startUp();
}
这里是EngineA的例子,EngineB是simuliar
@Stateful
public class EngineA implements IEngine
{
@Inject
private CoinManager cm;
//@Override
public void startUp()
{
cm.doSomeThing();
}
}
不幸的,即使工作,没有让我在EngineA使用@injection。实际上,EngineA中的cm为空。我怎样才能使这个工作?
BR和THX! Stefan