当前位置: 首页 > 知识库问答 >
问题:

Spring选择所需的bean实现

曹光霁
2023-03-14

我在SpringWeb应用程序中有一个原型范围的bean(我使用的是Spring注释),我们称之为MainBean,它通过依赖注入使用IOtherBean的一种实现。

我的问题是,直到运行时我们才知道我们需要使用哪个实现。当我们调用MainBean的一个方法(比如doStuff(字符串参数))时,它应该根据参数值来决定选择哪个实现。

目前,我只是通过将Application Context自动加载到MainBean中,并根据参数值调用appContext.getBean(),这样做很好。

我想知道有没有更干净的方法来做这件事?如果那些不是Spring管理的bean,我会使用工厂模式来实例化正确的一个。Spring中有类似的东西吗?从我读到的东西中,我看不出如何在运行时使用Spring工厂bean来做我想做的事情。

感谢任何建议。

共有1个答案

陆正德
2023-03-14

实际上是通过使用ApplicationContext。getBean()您已经使用了工厂模式,只有Spring的模式。getBean()方法在BeanFactory接口中声明,该接口由ApplicationContext扩展。所以你现在做的对我来说没问题。

 类似资料:
  • 问题内容: 我正在使用带有注释的Spring Bean,并且需要在运行时选择其他实现。 例如,我需要Windows平台,我需要Linux平台。 目前,我只知道一种可怕的解决方案: 请考虑我仅使用注释,而不使用XML配置。 问题答案: 您可以将bean注入移动到配置中,如下所示: 或者,您可以使用配置文件和,然后用注释(如或)注释您的服务实现,并为您的应用程序提供此配置文件之一。

  • 我一直在学习如何使用spring数据,并创建了一个非常简单的项目来测试它。文件夹结构和applicationcontext。xml显示在这里:applicationcontext。xml和文件夹结构我得到的错误显示在这里:控制台错误输出。我在类路径上有applicationContext,并声明了该类的bean,你知道我的问题是什么吗?非常感谢。 编辑:我已经更新了我的帖子,以显示主类和道类,以及

  • 目前,我正在学习Spring启动课程。然而,从昨天开始,当我通过VS代码启动我的主类时,我就面临这个问题:“com.training.training.Service.ProduitServiceImpl中的字段pr需要一个无法找到的“com.training.training.Repos.ProduitRepository”类型的bean。”所以我请求一些帮助来解决这个问题。 以下是stackt

  • 在选择域之前: 域名选择后: 当我们启动网站时,它将显示域名下拉列表和选项值为“选择域”。如果我选择“选择域”选项,将显示实际域名。(这意味着在我选择选择域选项之前,不会显示有效域名列表) 我是硒新手,所以我试着使用和可见文本选项选择该选项。 我尝试了下面的python代码。但它不起作用。 我需要按以下顺序选择: > 选择域按钮 接下来,我需要选择自动隐藏文本“选择域…”选项值。然后将显示域值。(

  • 我有一个像下面这样的场景。 假设有三个嵌套实体。并且所有都有几个嵌套的实体。 但是在选择时,它选择的是整个嵌套实体树。而我想取一个特定的分支。假设只提取和的所有子实体,留下和,那么我不确定如何做到这一点。随着spring,jpa将所有嵌套对象带回给我。 我正在使用下面的集合映射。 我打电话给你 它获取所有嵌套映射的实体列表,而我只需要和它的嵌套对象列表。 任何帮助都将不胜感激。

  • 我正在尝试从使用非特定span类来格式化/显示内容的网站中刮取数据。这些页面提供了有关化学产品的信息,并且每个产品都在一个div类中进行描述。我首先用那个div类进行解析,然后从那里提取我需要的数据。我已经能够得到许多东西,但我似乎无法提取的部分是在span类“ppisreportspan”中。如果您查看代码,您会注意到它在每个化学描述中出现多次。 这个样品包括两种化学物质。一个有“Alstar”