jakarta-ee - 如何为一个类实例化多个 CDI/Weld bean?

标签 jakarta-ee java-ee-6 cdi jboss-weld jsr299

在 Spring 中,可以通过在 xml conf 中定义相应的 bean 来实例化任何类。还可以为具有不同参数的同一个类实例化多个 bean.....

CDI 中是否也有这些功能,即是否可以使用不同的初始化参数创建同一类的不同实例?

是否也可以在不更改类的情况下创建 bean....我的意思是不添加注释?

添加

让我举个例子。

<bean id="someBean1" class="org.mm.MyBean">
    <property name="x" value="xx"/>
    <property name="y" value="yy"/>
    <property name="z" value="zz"/>       
</bean>
<bean id="someBean2" class="org.mm.MyBean">
    <property name="x" value="other value"/>
    <property name="y" value="yy2"/>
    <property name="z" value="zz2"/>       
</bean>

如何实例化同一个类的两个实例并用不同的字段值初始化它们?

最佳答案

据我所知,有两种选择:

  • 在没有进一步了解您的用例的情况下,我假设您要么想为(模拟)测试或配置问题提供一些替代实现(比如 OrderService 的另一个 PaymentProvider)。这是规范本身支持的,看看 @Alternative here (不要重复我最初的错误,也不要忘记激活 beans.xml 中的替代方案)
  • 要获得 Spring 风格的 XML 配置,您可以使用 Seam 3 Config ,它提供了如上所述的 XML 配置。顺便说一句,这已经是 JSR 299 的一部分,但由于某种原因已从规范中删除。
  • 关于jakarta-ee - 如何为一个类实例化多个 CDI/Weld bean?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2318848/

    相关文章:

    jakarta-ee - 如果通过 Provider.get() 获取 @Dependent 作用域的 CDI bean,何时会销毁该 bean?

    java - HQL 中的 Group By 和 Sum 结果

    java - 当 ejb-jar.xml 存在时,EJB3 注释将被忽略

    java - 将 CDI 上下文 bean 注入(inject)现有非上下文 bean 的正确方法?

    java - 使用 Spring 的线程安全 Struts Web 应用程序

    jsf - 使用 j_security_check 在 Java EE/JSF 中执行用户身份验证

    maven - java.lang.ClassNotFoundException : javax. faces.webapp.FacesServlet,tomcat 没有看到 javaee-api-7.0-b83.jar

    java - 组合组件放在哪里?(JSF 2.0)

    maven - OWASP ESAPI - 找不到/不在类路径中的 JavaEncryptor - 但 ESAPI 在其他功能中工作

    dependency-injection - CDI 注入(inject)回路