在这里插入图片描述

一. 问题背景

公司项目中用到了一个Map注入,如下:

@Autowired
private Map<String, XXXService> discountInfoMap;

二. 研究

上面Map的注入方式是一个多实现类的注入。一般我们都是注入单个实现类,比如:

@Autowired
private XXXService service;

解释:@Autowired是按照byType注入的(即按照bean的类型),当XXXService有多个实现类时,用上面代码块的方式进行注入,会报错。

当采用了策略模式设计了一个interface,它有多个实现类,应该使用如下的方式进行注入:

@Autowired
private Map<String, XXXService> discountInfoMap;

解释:Map的key就是bean的beanName,value就是实现类

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐