我寻找一种干净的 CDI 解决方案,而不是依赖于 WELD 的解决方案,但到目前为止一无所获......
我需要测试我获得的对象列表中的每个元素是否@Inject
@Any
MyInterface
beans 是一个代理,当true
我需要获取真实的对象进行内省并获取该对象的所有属性。
我的焊接实施:
MyInterface interf = obj;
if (isProxy(interf )) {
interf = (Config) ((TargetInstanceProxy)interf ).getTargetInstance();
}
where isProxy
是这样定义的(CDI解决方案?):
public boolean isProxy(Object obj) {
try{
return Class.forName("org.jboss.weld.bean.proxy.ProxyObject").isInstance(obj);
} catch (Exception e) {
LOGGER.error("Unable to check if object is proxy", e);
}
return false;
}
任何建议/指示。在官方文档中我发现没有提到内省(here http://docs.jboss.org/weld/reference/latest/en-US/html/injection.html#_injection_points)
然后我想通过这样的方式获取 bean 的所有属性:
Arrays.stream(interf.getClass().getDeclaredFields()).forEach(
field -> extractStuff(...)
);
我们使用 Wildfly 和 WELD,但不想将我们绑定到 CDI 的实现。
提前致谢!
EDIT:更准确地说,问题是:您知道 WELD 是一种干净的 CDI 解决方案吗?already实施与目标实例代理?如果我需要回学校或者我理解我在写的内容,则不会。感谢您花时间提供帮助!