我想从producer方法获取bean以读取其属性.在某些情况下,bean是一个EJB Singleton
bean.
我简化了我的代码以专注于这个问题.
我的简单限定符:
@Qualifier @Retention(RUNTIME) @Target({TYPE, METHOD, FIELD, PARAMETER}) public @interface InjectMe {}
简单生产者:
@Dependent public class SimpleProducer { @Produces @InjectMe public String getInjectMe(InjectionPoint ip) { // ip.getBean() returns null for some reason return "ip=" + ip + ", bean=" + ip.getBean(); } }
EJB(Singleton):
@Singleton @Startup public class SimpleSingleton { @Inject @InjectMe private String injectMe; @PostConstruct public void init() { System.out.println(injectMe); }
}
控制台输出:
信息:ip = [BackedAnnotatedField] @Inject @InjectMe private com.test.ejb.SimpleSingleton.injectMe,
bean=null
当我将Singleton
bean 更改为CDI
bean时,一切正常(ip.getBean()
返回非null).它Java EE 6
甚至可以用于Singleton
豆类,但它没有Java EE 7
.我正在使用Glassfish 4应用程序服务器.
是否在某处指定了此行为?