除非明确注释,否则不会发现CDI bean

时间:2015-04-09 09:12:07

标签: java jboss cdi wildfly weld

当豆子是POJO时,当Weld说“对Foo类型的依赖性不满意”时,这意味着什么?但是,只要我在顶部添加@Dependent,一切正常吗? 我记得它曾经很好地工作而没有指定范围。我想我弄坏了什么。

规格说:

  

托管bean由Java类实现,称为bean类。顶级Java类是托管bean,如果它被任何其他Java EE技术规范(例如JavaServer Faces技术规范)定义为托管bean,或者它满足以下所有条件。

     
      
  • 这不是一个非静态的内部阶级。

  •   
  • 这是一个具体的类或注释@Decorator。

  •   
  • 它没有使用EJB组件定义注释或在ejb-jar.xml中声明为EJB bean类。

  •   
  • 它有一个合适的构造函数。也就是说,情况如下之一。

  •   
  • 该类有一个没有参数的构造函数。

  •   
  • 该类声明一个注释为@Inject的构造函数。

  •   
     

定义托管bean不需要特殊声明,例如注释。

1 个答案:

答案 0 :(得分:9)

听起来像你习惯了CDI 1.0,现在被CDI 1.1中引入的隐式bean档案搞糊涂了。

beans.xml现在是可选的,隐式bean归档是默认的,这意味着只有当一个bean有一个bean定义注释,如@Dependent@RequestScoped等时,它才是一个候选bean。