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

可以使用Spring创建HashMap,但不能创建Map

弘康安
2023-03-14
<bean id="map" class="java.util.HashMap" scope="prototype" >
    <constructor-arg>
        <map key-type="java.lang.String" value-type="java.lang.String">
            <entry key="Key 1" value="1" />
            <entry key="Key 2" value="2" />
        </map>
    </constructor-arg>
</bean>
@Autowired
@Qualifier("map")
private HashMap<String, String> map;
@Autowired
@Qualifier("map")
private Map<String, String> map;

我的问题是:为什么我不能自动连接我的地图与接口,而我可以与实现?

多谢了。

共有1个答案

司徒正信
2023-03-14

在声明collection类型的bean时,不能通过@autowired注入它。请参阅以下Spring文档:

4.11.3使用限定符微调基于注释的自动生成

这种语义差异的一个具体结果是,本身被定义为集合或映射类型的bean不能通过@autowired注入,因为类型匹配不适用于它们。对此类bean使用@resource,通过唯一名称引用特定的集合/映射bean。

@Resource
@Qualifier("map")
private Map<String, String> map;
 类似资料:
  • 我是spring及其概念的初学者。我试图使用@Configuration和package scan注释来扫描单个包下的一些bean提供程序类。当其中一个类的@Bean注释方法与另一个不同类的@Bean注释方法同名时,两个类都不会创建Bean。如果我将@bean注释的方法名称更改为未创建的bean的另一个名称,那么两个bean都会成功创建。无法理解这种行为。 如果我正在创建另一个类,如顶部下面的Be

  • 我正在尝试在Swiftui2.0Xcode 12.4中创建一个WebView视图,但它太新了,我找不到答案和最佳实践的好例子。对于下面的代码,我得到以下错误。 类型SwiftUIWebView不符合协议UIView表示 此外,配置设置已更改,我无法启用。正确地允许使用JavaScript。尝试将其添加到“perfs”会触发一个错误,抱怨不喜欢Bool。

  • 我正在为我的项目(wirtual clinic)制作一个数据库,它将是一个web应用程序,但这里有一件事…为了使我的应用程序基于JavaFX(MVC模式,在视图段中我可以使用SceneBuilder编辑的.fxml文件),这个解决方案可能吗?

  • 问题内容: 我试图创建一个地图列表。在下面的代码中,我期望得到 但是,我只有 如何避免覆盖第一张地图?这是我的代码: 谢谢! ========================= 作为来自过程语言背景(SAS)的Java学习者,我花了很多时间学习和试验ArrayList,LinkedList,Map,LinkedMap等- 我无法使它正常工作。而且我不了解我的有限知识。现在,以下所有答案都很出色!他

  • 第一个类称为FileReader,它读取一个逐行写入的txt文件,我们需要的每个字段都用“;”分隔,例如(“哥伦比亚大学”;“美国”;78.86;2012)。每行包含2个字符串(大学名和国家)和2个数字(分数和年份)。FileReader类在读取txt文件后,在ArrayList中返回其内容。 该作业的第二个类称为UniversityScores,它有4个字段(uniname、country、sc

  • 我正在使用JAXB从XSD文件创建Java对象。我正在创建不可变包装器来隐藏由JAXB生成的对象(之前我更新了JAXB对象,以实现不可变接口并将接口返回给客户机。但意识到改变自动生成的类是不好的,因此使用包装器) 目前,我正在将这些不可变的包装返回到客户端应用程序。是否有任何选项,使自动生成的类将是不可变的,并避免创建不可变包装器的额外工作。任何其他方法都是鼓励的。 谢谢