【发布时间】:2015-06-14 13:46:58
【问题描述】:
当 bean 是 POJO 时 Weld 说“不满足类型 Foo 的依赖”是什么意思,但是,只要我在顶部添加 @Dependent,一切正常吗?
我记得它曾经在不指定范围的情况下正常工作。我想我弄坏了一些东西。
规格说明:
托管 bean 由称为其 bean 类的 Java 类实现。如果顶级 Java 类被任何其他 Java EE 技术规范(例如 JavaServer Faces 技术规范)定义为托管 bean,或者满足以下所有条件,则它是托管 bean。
它不是一个非静态内部类。
它是一个具体的类或被@Decorator注解。
它没有使用定义 EJB 组件的注释进行注释,也没有在 ejb-jar.xml 中声明为 EJB bean 类。
它有一个合适的构造函数。即以下情况之一。
该类有一个没有参数的构造函数。
该类声明了一个带有 @Inject 注释的构造函数。
定义托管 bean 不需要特殊声明,例如注解。
【问题讨论】:
-
您引用的是哪个规范?托管 bean 还是 CDI?有区别。
-
有什么区别?
-
这是来自 CDI 规范。将 Managed Beans 视为具有默认功能的(超)类,将 CDI bean 视为 Managed Bean 超类的专用(子类)版本。是的,您不需要任何注释来定义托管 Bean。一个有效的托管 bean 享有容器提供给它的以下服务——生命周期管理、资源注入和拦截器。 CDI 建立在托管 bean 规范之上并提供附加服务——主要是上下文依赖注入。要将简单的托管 bean 转换为 CDI bean,您需要定义 CDI 特定的注释
标签: java jboss cdi wildfly weld