在没有 beans.xml 的情况下注册带注释的 CDI bean
Register annotated CDI beans without beans.xml
我们有一些带注释的 CDI bean,我们需要在没有 beans.xml 的情况下注册这些 bean。当然,我们正在使用 CDI 扩展机制,但我找不到注册 bean 的简单方法。当我们使用 beans.xml 时,我们只是说 "all" 并且它会注册所有带注释的 bean。在 CDI 扩展中呢?
例如,
abc.scanPackage("com.abc") // register all annotated beans in com.abc package
在 CDI 扩展中,您可以观察 BeforeBeanDiscovery
event and explicitly add an AnnotatedType
via BeforeBeanDiscovery#addAnnotatedType()
which you create via BeanManager#createAnnotatedType()
,传递您的 bean class:
public void beforeBean(@Observes BeforeBeanDiscovery beforeBeanDiscovery, BeanManager beanManager) {
beforeBeanDiscovery.addAnnotatedType(beanManager.createAnnotatedType(YourBean.class));
}
我们有一些带注释的 CDI bean,我们需要在没有 beans.xml 的情况下注册这些 bean。当然,我们正在使用 CDI 扩展机制,但我找不到注册 bean 的简单方法。当我们使用 beans.xml 时,我们只是说 "all" 并且它会注册所有带注释的 bean。在 CDI 扩展中呢?
例如,
abc.scanPackage("com.abc") // register all annotated beans in com.abc package
在 CDI 扩展中,您可以观察 BeforeBeanDiscovery
event and explicitly add an AnnotatedType
via BeforeBeanDiscovery#addAnnotatedType()
which you create via BeanManager#createAnnotatedType()
,传递您的 bean class:
public void beforeBean(@Observes BeforeBeanDiscovery beforeBeanDiscovery, BeanManager beanManager) {
beforeBeanDiscovery.addAnnotatedType(beanManager.createAnnotatedType(YourBean.class));
}