Spring Autowire Bean具有多个接口实现,在方法中定义实现

2024-05-21

我是 Spring 和 Spring Boot 的新手,所以希望这不是一个愚蠢的问题。

我有一个带有多个实现的接口。实现注释为@Component("NameOfImpl").

我的目标是使用选定的实现自动装配 bean。在正常情况下我可以这样做@Autowired @Qualifier("NameOfImpl"),但我的问题是我想在以下方法中选择一个实现:

public void doSomethingMethod(){ 
      for(String line: configFile){
                String[] values = line.split(";");

                if (values[0].equals("A")) {
                    //here I want to select an bean implementation

                }
                else if (values[0].equals("B")) {
                    //here I want to select another bean implementation

                }
      }
      bean.doSomething();
    }

我怎样才能做到这一点?你有什么建议? 谢谢你!


你可以要求Spring注入一个Map豆子。映射中的键将是 bean 的名称。

如果您有一个名为Example

public interface Example {

}

以及两个实现:

@Component("foo")
public class FooExample implements Example {

}

@Component("bar")
public class BarExample implements Example {

}

你可以有一张地图Example注入的豆子:

@Component
public class ExampleConsumer {

    private final Map<String, Example> examples;

    @Autowired
    public ExampleConsumer(Map<String, Example> examples) {
        this.examples = examples;
    }
}

在这种情况下,地图将包含两个条目:

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

Spring Autowire Bean具有多个接口实现,在方法中定义实现 的相关文章

随机推荐

  • Java ElasticSearch 配置的节点均不可用

    过去一小时刚刚下载并安装了elasticsearch 1 3 2 打开 IPtables 端口 9200 和 9300 9400 在 etc hosts 中设置我的计算机名称和 ip 头部模块和护理人员安装并运行顺利 本地主机上的curl
  • CSS:显示:块;与显示:表格;

    之间有区别吗display block and display table 在我看来 它就像包含 dom node 的显示类型table row and table cell节点并不重要 MDN 是这么说的display table 让它表
  • 返回两个文件之间不同的行 (Python)

    我有两个文件 每个文件都有数万行 output1 txt 和output2 txt 我想迭代这两个文件并返回两个文件之间不同的行 和内容 它们大部分是相同的 这就是为什么我找不到差异 filecmp cmp 返回 false 7 4 dif
  • 如何在react-router-dom v6中的路由组件中添加道具

    正如标题所述 我曾经有一个带有状态组件的页面 该组件根据 url 的更改获取不同的 props 现在 升级到React Router v6 我真的不明白如何让它再次工作 我确实知道现在解决这个问题的唯一方法是使用诸如 useNavigate
  • 在 OpenShift Tomcat 上部署后无法运行 Spring MVC Web 应用程序?

    我想知道如何配置我的 spring mvc 配置 xml 文件以连接到开档 PostgreSQL 9 2数据库 我已经对路径的tomcat配置文件进行了更改 openshift 配置目录 只是想知道如何从部署在 openshift tomc
  • pytest 与 setup.py 测试

    我使用说明 描述了here https pytest org latest goodpractices html integrating with setuptools python setup py test pytest runner
  • 在资源字典中添加字体系列

    我正在使用msdn教程 http msdn microsoft com en us library ms753303 aspx wa wsignin1 0要在我的 Wpf 应用程序中添加 FontFamily 在 csproj 中我有
  • 如何使用 dplyr 管道将额外参数传递给 purrr::map

    我有以下数据框和功能 param df lt data frame x 1 3 0 1 y 3 1 0 2 param df gt x y gt 1 1 1 2 8 gt 2 2 1 1 8 gt 3 3 1 0 8 my function
  • Angular-Chart.js 它不显示图表

    我正在尝试使用 Angular chart js 它没有为我显示任何内容 这是我的 javascript 和 html 页面 function angular module app chart js controller BarCtrl f
  • 在 AzureDevops 中发布测试结果挂起

    我们正在使用发布测试结果任务PublishTestResults 2在 Azure Devops 的管道中发布 junit 类型结果 它以前运行良好 但现在挂起 10 分钟 我认为这是默认的作业超时 然后失败 即使结果已发布 如果我在作业开
  • 约束包如何工作?

    背后的想法数据 约束 Forall http hackage haskell org packages archive constraints 0 3 2 doc html src Data Constraint Forall html据我
  • SQLite.Net-PCL 连接未找到数据库

    我一直在尝试创建一个 Windows Phone 我想使用 SQLite 来存储我的数据并学习如何在 Windows Phone 应用程序上使用它 为此 我使用 SQLite Net PCL 但我不断收到文件未找到异常 这是我写的代码 St
  • UITabBarController 未选择的图标图像色调

    我有一个 UITabBarController 我正在尝试修改 现在 未选择的选项卡图标图像默认为灰色 我知道您无法以编程方式更改这些未选择的图标图像的色调 苹果表示 色调是由 png 文件本身的实际色调控制的 因此 如果您想要白色或绿色图
  • 无法使用 abortBroadcast() 阻止短信?

    我正在开发一个短信拦截器应用程序 其中我使用广播接收器和 abortBroadcast 方法 正如许多人在这里建议的那样 防止消息到达收件箱并提醒用户 但就我而言 当我使用模拟器发送短信时 短信不会被阻止 并到达收件箱 我也会收到错误 06
  • 集群中的spring集成+cron+quartz?

    我有一个由 cron 表达式触发的 spring 集成流程 如下所示
  • pyspark通过特定键加入rdd

    我有两个 rdd 需要将它们连接在一起 它们看起来像下面这样 RDD1 u 2 u 100 2 u 1 u 300 1 u 1 u 200 1 RDD2 u 1 u 2 u 1 u 3 我想要的输出是 u 1 u 2 u 100 2 所以我
  • JavaScript 对象的子对象可以引用自身吗?

    我有一个 JavaScript 对象Team and a Score代表点和一些其他函数 我想知道在将得分存储在团队中的同时将团队存储在得分中是否安全 var Score function team this team team this
  • 空手道 API 测试 - 转义“?”在功能文件的 url 中

    我正在使用pathKarate API 框架中的关键字用于连接字符串以形成 url 但是 我无法通过 这是我正在做的事情 Background url https api cloud abcde com animal Scenario Ve
  • 如何根据多个条件创建列?

    我有一个数据框 我想根据多个条件创建一个列 v1 v2 v3 v4 v5 4 1 2 4 5 5 5 2 4 5 6 21 9 20 30 50 6 4 5 7 9 10 3 6 5 9 基本上 使用以下可能的值创建 v6 Cat dog
  • Spring Autowire Bean具有多个接口实现,在方法中定义实现

    我是 Spring 和 Spring Boot 的新手 所以希望这不是一个愚蠢的问题 我有一个带有多个实现的接口 实现注释为 Component NameOfImpl 我的目标是使用选定的实现自动装配 bean 在正常情况下我可以这样做 A