CDI:使用构造函数参数手动创建bean

时间:2015-06-08 08:38:15

标签: java cdi weld

我有一个我想成为豆类的课程

public class SomeBean{
   public SomeBean(){
     //default constructor
   }
   public SomeBean(String someStr){
    //constructor with arguments.
   }
}

为了手动创建CDI bean,我执行以下操作

Bean<?> bean = (Bean<?>) beanManager.resolve(beanManager.getBeans(SomeBean.class));
SomeBean someBean =(SomeBean) beanManager.getReference(bean, bean.getBeanClass(), beanManager.createCreationalContext(bean));

但是上面的方法将创建SomeBean实例和wth默认构造函数。如何创建bean并将String参数传递给construcot? 附: CDI - WELD

1 个答案:

答案 0 :(得分:0)

使用给定的构造函数参数定义bean的标准方法是通过生成器方法,例如

@Produces @ApplicationScoped @MyQualifier
public SomeBean myBean() {
    return new SomeBean("foo");
}

除非您想创建CDI扩展名,否则应用程序代码通常不必使用BeanManager