我建议你在你的 JSF 项目中使用 CDI,然后你可以使用编程注入。您应该首先将 CDI 限定符添加到您的接口实现中(您基本上将为每个实现创建自定义注释 -教程)。然后你可以使用类似的东西
@Named //similar to ManagedBean
@RequestScoped
public Bean {
@Inject
@Any
Instance<YourInterface> yourInterface;
public void someMethod() {
if(someCondition) {
InterfaceImpl impl = yourInterface.select(new SomeOfYourQualifiers()).get();
}
}
}
资源
此外,您不必Autowired
使用Inject
. 我也确信有一些 Spring 方法可以做到这一点,但我将把它留给一些 Spring 专家在这里:-)
编辑
根据this answer真的可以在Tomcat上运行CDI。您还会发现一些类似这样的教程。Spring 方法可能是使用AutowireCapableBeanFactor但正如我所说,我不太了解 Spring,所以它只是一个疯狂的猜测:-)