Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 大豆的动态CDI注射_Java_Plugins_Dependency Injection_Cdi - Fatal编程技术网

Java 大豆的动态CDI注射

Java 大豆的动态CDI注射,java,plugins,dependency-injection,cdi,Java,Plugins,Dependency Injection,Cdi,我试图找到一种在运行时加载的类中使用注入的方法, 我已经用这种方法成功地向它们注入了现有的bean: AnnotatedType<T> plugType=beanManager.createAnnotatedType(clazzT); InjectionTarget<T> it = beanManager.createInjectionTarget(plugType); T o=it.produce(ctx); it.inject(o, ctx); it.postCons

我试图找到一种在运行时加载的类中使用注入的方法, 我已经用这种方法成功地向它们注入了现有的bean:

AnnotatedType<T> plugType=beanManager.createAnnotatedType(clazzT);
InjectionTarget<T> it = beanManager.createInjectionTarget(plugType);
T o=it.produce(ctx);
it.inject(o, ctx);
it.postConstruct(o);
AnnotatedType plugType=beanManager.createAnnotatedType(clazzT);
InjectionTarget it=beanManager.createInjectionTarget(plugType);
T o=it.PRODUCT(ctx);
注射(o,ctx);
it.施工后(o);
问题是当试图注入一个不是加载bean的类时, 假设我想加载两个类A和B,A的字段类型为B注入-然后A的注入在缺少依赖项时失败, B的创建成功了(稍后尝试实例化时),但这不会在当前bean管理器中“注册”bean,因此使我尝试“双重传递”以确保依赖关系失败。 尝试研究CDI可移植扩展,但似乎需要在某些文件中显式声明这些扩展-我正在寻找加载完全未知的实体(可能实现某些接口)


有什么想法吗?

hk2是一个您可能感兴趣的动态注入框架。它专门设计用于加载在初始引导时未知的后续实体,因此它可能就是您正在寻找的