Hi, BeanProvider just works for managed beans as it just "provide beans" from the underlying CDI container.
If you would like to do injection in a unmanaged object, you can do the following: MyUnmanagedBean a = new MyUnmanagedBean(); BeanProvider.injectFields(a); Regards, Thomas 2016-07-20 9:13 GMT+02:00 rickqinj <[email protected]>: > Hello,The BeanProvider makes me confused for a few days. Could anyone help > me out?The problem in my case is that I cannot get an instance of a > non-managed class by BeanProvider.getContextualReference() method.I listed > my case as following: > // DeltaSpike 1.4.2, Weld 1.1.31, CDI 1.0-SP4 > //--Class A--public class A { //member fields > private B b; //Constructor with parameters. public A(String p1, > String p2, String p3) { //...just do something. > } public B getInstanceOfB() { b = > BeanProvider.getContextualReference(B.class, false); return b; > } > } > //--Class Caller--@Named > public class Caller { //... public void action() { A a = new > A("s1", "s2", "s3"); B b = a.getInstanceOfB(); //<-------- I cannot > get an instance of B. } //... > } > The class A is a non-managed bean, and Caller is managed. > Am I do wrong with BeanProvider? What should I do to get the instance of > B?Ps. I cannot make the class A managed, it may cause refactoring of all > project. (~that's awful~)And according to the error log, it seems that a > missing InjectionPoint may caused this problem. > Many thanks for your help! > > >
