注册没有beans.xml的带注释的CDI bean

时间:2016-05-17 23:39:13

标签: java-ee cdi

我们有一些带注释的CDI bean,我们需要在没有beans.xml的情况下注册这些bean。当然,我们正在使用CDI扩展机制,但我找不到一种注册bean的简单方法。当我们使用beans.xml时,我们只是说" all"它会注册所有带注释的bean。在CDI扩展中怎么样?

例如,

abc.scanPackage("com.abc") // register all annotated beans in com.abc package

1 个答案:

答案 0 :(得分:2)

在CDI扩展程序中,您可以观察BeforeBeanDiscovery事件,并通过AnnotatedType通过BeforeBeanDiscovery#addAnnotatedType()明确添加BeanManager#createAnnotatedType(),并传递您的bean类:

public void beforeBean(@Observes BeforeBeanDiscovery beforeBeanDiscovery, BeanManager beanManager) {
    beforeBeanDiscovery.addAnnotatedType(beanManager.createAnnotatedType(YourBean.class));
}