CDI bean配置

时间:2013-10-29 09:27:34

标签: spring cdi

我是CDI的新手。

我用于在XML(Spring)中配置bean。在CDI中,我应该直接在类中配置它们吗?我有几十个具有相同实现但配置不同的bean。

2 个答案:

答案 0 :(得分:4)

CDI使用注释和xml配置的混合来配置部署中哪些bean处于活动状态。这是一个很大的话题,但我会尝试总结一下:

在bean实现上,您可以使用以下标准注释:

@Default
@Alterative
@Vetoed
@Specializes
除非没有其他注释,否则假定@Default

除非在META-INF / beans.xml

中指定,否则@Alternative bean不活动

@Vetoed bean永远不会被认为是活跃的

@Specializes bean将始终优先于其超类。

除了那些,你可以创建自己的限定符,以更准确地选择你想要的bean用于什么目的。

您可以将限定符创建为这样的注释:

@Qualifier
@Retention(RUNTIME)
@Target({ TYPE, FIELD, PARAMETER, METHOD })
public @interface MyQualifier {
}

请注意@Qualifier和@Retention(RUNTIME)注释。 您还可以向客户限定符添加参数。

我建议给Weld文档一个阅读,它是全面的,写得很好:

Weld manual

答案 1 :(得分:2)

是的,配置在代码中发生。已经有几次尝试进行基于XML的配置,寻找Seam Config。

对于您的数十个bean,您通常会使用生产者方法来创建具有自己配置的各个实现。 CDI使用限定符而不是bean id来识别bean。