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

Spring不能自动连接地图bean

何聪
2023-03-14

我在spring中定义了一个映射:

<util:map id="AdditionalParams" scope="prototype" map-class="java.util.HashMap" 
          key-type="java.lang.String" value-type="java.lang.String">
    
    <entry key="Start" value="12345" />
    <entry key="Finish" value="12365" />
</util:map>

然后我将这个bean自动转换为一个属性,该属性定义为:

private @Autowired @Qualifier(value = "AdditionalParams") Map<String, String> additionalParams;

干杯。

共有1个答案

顾磊
2023-03-14

从Spring4.3开始,@autowired可以注入列表和映射,并且问题中的给定代码可以工作:

也就是说,从4.3开始,集合/映射和数组类型也可以通过Spring的@autowired类型匹配算法进行匹配,只要元素类型信息保留在@bean返回类型签名或集合继承层次结构中。

但是在更低的Spring版本中,你不能自动生成这样的集合。但是,您可以执行以下操作:

@Resource(name="AdditionalParams")
private Map<String, String> additionalParams;
@Value("#{AdditionalParams}")
private Map<String, String> additionalParams;

本身被定义为集合或映射类型的bean不能通过@autowired注入,因为类型匹配不适用于它们。对此类bean使用@resource

 类似资料:
  • 和我的配置类: 1)AppConfig。 2)AppInitializer: 不幸的是同样的结果: 找不到依赖项得[Kamienica.Service.CustomUserDetailsService]类型得合格bean:需要至少1个具有此依赖项自动候选资格得bean.依赖项注释:{@org.SpringFramework.Beans.Factory.Annotation.AutoWired(re

  • 我是Spring的新手。我正面临Spring-Boot的问题。我正在尝试将外部配置文件中的字段自动装配到自动装配的bean中。我有以下类 应用程序。Java语言 AppConfig。Java语言 服务接口 服务1 我无法在App类的postconstruct方法中显示服务名称变量。我这样做对吗?

  • 代码完成了这项工作,创建了repo HashMap对象({})。然而,我试图让repo映射对象由Spring生成。所以我把DataRepoImpl改成: 然而,当我重构帐户ID和地图键到字符串类型,我能够产生HashMap包含一个'假人'变量,这是奇怪的: 回到Integer,我无法修复错误,然后我尝试将自动连线移到DataRepoImpl类的空构造函数: 然而,我从repo得到空值,因为(我的假

  • 问题内容: 可以与列表一起使用吗? 就像我有带有mimetypes的属性文件,而在我的班级文件中,我有类似的东西 问题答案: Spring 4支持自动收集给定类型的所有bean并将其注入到集合或数组中的能力。 例:

  • 当我编写一些spring代码时,我使用了带有class和annotation-config的Spring4。我已经声明一个bean将接口实现为组件。我正在尝试制作另一个bean来依赖于它的接口时间。但它不起作用,因为spring抛出一个错误,在该名称中找不到bean。我想这可能是因为只靠和实体类的自动电线工作,但我不知道为什么它会这样设置?有人能解释为什么依赖注释不允许类型自动连接到接口吗? 简单