有没有办法在运行时提供动态绑定? AbstractBinder允许您绑定工厂,但必须在编译时知道类类型。
产生效果:
public class MyDynamicBinder implements DynamicBinder {
@Override
public boolean canBind(Class<?> someContract) {
return iCanBindThis(someContract);
}
@Override
public Object bind(Class<?> someContract) {
return getMyInstance(someContract);
}
}
答案 0 :(得分:1)
hk2是一种极其动态的注射容器。与guice和CDI不同,它可以随时向其ServiceLocator添加服务(如果您有适当的权限)。使用ServiceLocator(在任何其他任何hk2服务的任何地方都可以使用该服务),您可以使用ServiceLocatorUtilities中的方法,如addClasses或addOneDescriptor,以便随时添加您需要的任何服务。您也可以随时删除服务,但很少有人这样做(除非您正在编写自己的动态容器)