如何在 CDI 中动态创建实例

2024-04-20

假设我有一个汽车课程。在我的代码中我想创建 10 辆汽车。汽车类有一些@Inject带注释的依赖项。

做到这一点的最佳方法是什么?

CDI 有一个Provider我可以用它来创建汽车的界面:

@Inject Provider<Car> carProvider;
public void businessMethod(){
    Car car = carProvider.get();
}

不幸的是,如果我没有的话,这不起作用CarFactory有一个方法@Produces创建汽车的注释。尽管它反映了现实世界,没有工厂我就无法制造汽车,但我宁愿不为所有东西编写工厂。我只希望 CDI 容器能够像任何其他 bean 一样创建我的汽车。

您建议我如何创建这些汽车?


只需使用javax.enterprise.inject.Instance接口代替。

像这样:

public class Bean {

    private Instance<Car> carInstances;

    @Inject
    Bean(@Any Instance<Car> carInstances){
        this.carInstances = carInstances;
    }

    public void use(){
        Car newCar = carInstances.get();
        // Do stuff with car ...
    }

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 CDI 中动态创建实例 的相关文章

随机推荐

  • 通过类名 JQuery 获取 ID

    嗨 这是一个jquery问题 假设我有这个
  • Windows 8 Internet Explorer 10 仍然有怪异模式吗?

    我想知道 Windows 8 上的 IE10 是否仍然有 Quirksmode 因为我们有一个 Web 应用程序 仍然 可以与 quirksmode 配合使用 我想知道它是否仍然可以在 Windows 8 上运行 IE10 有两种怪异模式
  • NotificationCompat v7 不适用于 Oreo 及更高版本的操作系统

    我遇到了麻烦NotificationCompat v7 on android 8 9 在所有 Android 版本上显示通知的最佳方式是什么 调试日志 android app RemoteServiceException Bad notif
  • 在 Android Studio 中重用模块

    每当我将 android 库项目作为模块添加到 Android Studio 项目时 源代码都会被复制到 Android Studio 项目文件夹中 有没有办法像在 eclipse 中一样解决这个问题 其中只有一个库项目副本 任何多个项目都
  • 如何从嵌套母版页中的内容页面访问主母版页中的控件

    我有 2 个嵌套的母版页 这是主母版页代码 例如
  • http handler 接口中 bool IsReusable 的意义

    当编写 http 处理程序 模块时 需要实现一个名为 的接口成员bool 是否可重用 https learn microsoft com en us dotnet api system web ihttphandler isreusable
  • jQuery:如何用逗号对一列数字求和?

    我使用了网上找到的以下功能 效果非常好 然而 当我的用户后来要求在数字中包含逗号时 它就崩溃了 它仅添加逗号前面的数字 这是函数 function sumOfColumns tableID columnIndex hasHeader var
  • 空白链接在同一窗口中打开 - 为什么以及如何修复它? [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我有四个链
  • 类型错误:无法读取 Jasmine 中未定义的属性(读取“订阅”)

    我正在尝试为以下方法编写测试用例 subscriptionPackages this managePackageService getPackages subscribe response gt this packagePlan respo
  • 该应用程序的开发人员尚未正确设置该应用程序以进行 Facebook 登录?

    我正在尝试在我的脚本中使用 Facebook 进行登录 我已经完成了所有操作 但是当我尝试使用 Facebook 帐户登录时 我从 Facebook 收到此错误 Error 应用程序未设置 此应用程序的开发人员尚未正确设置此应用程序以进行
  • std::vector 当 Foo 的某些成员是引用时

    只要有可能 我通常更喜欢使用引用而不是指针 在我看来 它使语法更清晰 在这种情况下 我有一堂课 class Foo public Foo Bar bar bar bar private Bar bar operator 对于这样的类 编译器
  • 在对数时间内找到未排序数组中的最小值

    是否有一种算法方法可以在对数时间 O logn 内找到未排序数组的最小值 或者只能在线性时间内实现 我不想并行 Thanks Michael 如果列表未排序 则您的搜索必须至少是线性的 每个项目你必须至少看一遍 因为任何你没看过的东西mig
  • 修复 npm 安装失败并显示错误代码 EINTEGRITY

    我在这里浏览了各种类似的帖子但无济于事 他们都得出了类似的解决方案npm cache verify or npm cache clear etc 我什至使用一切可能的方法完全删除 npm 和 node 并重新开始 我什至诉诸使用 force
  • 谷歌地图多边形 - 叠加

    我正在尝试在我的谷歌地图上实现 负 覆盖 类似于您在estately com 上获得的效果 基本上 我已经根据收集的 KML 数据成功绘制了地图多边形 当有多条路径时 它们绘制得很好 因此 在对我的示例进行建模时 首先 我从 Polygon
  • 如何将复选框绑定到Vuex存储?

    我有一个包含一些复选框的组件 我需要能够访问从 Vue 应用程序中的其他组件检查了哪些复选框 但我无法弄清楚 也无法在网上找到 如何将复选框正确连接到我的 Vuex 商店 将组件内的复选框连接到 Vuex 存储的正确方法是什么 以便它们的行
  • 如何确定使用哪种认证方式?

    我想知道 我如何确定正在使用哪种身份验证方法 例如 如果我的身份验证基于 FORMS 身份验证 而不是 WINDOWS 身份验证 我想执行代码 您可以使用配置管理器检查网络配置上的内容 ConfigurationManager GetSec
  • 停放正在使用的线程

    我正在尝试线程停放并决定构建某种服务 它是这样的 public class TestService private static final Logger logger LoggerFactory getLogger TestService
  • 如何使用引脚和选项卡像 Delphi IDE 一样进行拖动和停靠?

    我想让 拖放 和 停靠 在我的应用程序中像在 Delphi IDE 中一样工作 即能够在对象检查器 结构视图周围拖动并将它们停靠在合适的位置 我在将表单对接到 PageControl 方面取得了相当大的成功 但想知道是否有人知道如何让它与小
  • 如何更改 Hybris 站点地图 XML 中的本地主机 URL

    我正在尝试通过开箱即用的方式为我的 Hybris 站点创建一个 sitemap xml 并复制我的 site impex 中开箱即用商店中给出的 ImpEx 如何更改 Hybris 站点地图 XML 中的本地主机 URL 运行 cronjo
  • 如何在 CDI 中动态创建实例

    假设我有一个汽车课程 在我的代码中我想创建 10 辆汽车 汽车类有一些 Inject带注释的依赖项 做到这一点的最佳方法是什么 CDI 有一个Provider我可以用它来创建汽车的界面 Inject Provider