2015-06-08 17 views
5

benCDI: Yapıcı argümanlarla manuel oluşturarak fasulye

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

Ancak yukarıda aşağıdakileri yapın fasulye elle CDI fasulye oluşturmak için

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

olmak istiyorum bir sınıf var yöntem, SomeBean örneği wth varsayılan kurucu oluşturur. Fasulyeyi nasıl oluşturabilirim ve String argümanını construot'a nasıl aktarabilirim? P.S. CDI - WELD

cevap

0

Çekirdekleri verilen yapıcı argümanlarıyla tanımlamanın standart yolu, üretici metodu, örn.

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

Uygulama kodu normalde bir CDI uzantısı oluşturmak istemiyorsanız, BeanManager kullanmak zorunda olmamalıdır.

+1

Üretimi biliyor ve anlıyorum. Ama benim durumumun manuel yaratılmasına ihtiyacım var. –