我有一堂想当 bean 的课

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实例。如何创建bean并将String参数传递给construcot?
P.S. CDI- Weld

最佳答案

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

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

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

10-01 05:41