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

为什么这个Spring映射没有注入到我的Scala对象中?

容磊
2023-03-14
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xmlns:p="http://www.springframework.org/schema/p"
  xmlns:context="http://www.springframework.org/schema/context"
  xmlns:util="http://www.springframework.org/schema/util"
  xmlns:device="http://www.springframework.org/schema/mobile/device"
  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd
        http://www.springframework.org/schema/mobile/device http://www.springframework.org/schema/mobile/device/spring-mobile-device-1.0.xsd">

  <util:map id="validHosts">
    <entry key="host1.domain.com" value="queue-1" />
    <entry key="host2.domain.com" value="queue-2" />
  </util:map>

</beans>
import scala.collection.JavaConversions._

import org.springframework.beans.factory.annotation.Autowired
import org.springframework.stereotype.Component

@Component
class HostMapper() {

  @Autowired private var validHosts:java.util.Map[String, String] = null

}

org.springframework.beans.factory.NosuchBeanDefinitionException:没有找到与依赖项[map with value type java.lang.String]匹配的类型[java.lang.String]的bean:需要至少1个bean作为此依赖项的autowire候选项。

我尝试将键和值类型显式声明为java.lang.String,但没有效果。你知道我可能做错了什么吗?

共有1个答案

满和安
2023-03-14

我自己并不知道这一点,实际上发现了这一点:

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

我测试了这个,而不是

 @Autowired
 @Resource
 private Map<String, String> validHosts;


 <util:map id="validHosts" key-type="java.lang.String" value-type="java.lang.String">
    <entry key="host1.domain.com" value="queue-1" />
    <entry key="host2.domain.com" value="queue-2" />
</util:map>
 类似资料:
  • 我试图将我的Springmvc项目转换为Spring启动。我根据Spring启动转换了所有必要的文件。控制台上没有错误。但是当我在浏览器中运行我的网络应用程序时,我得到了这个错误。 在名为“DispatcherServlet”的DispatcherServlet中找不到URI为[/onlineshopping/WEB-INF/views/page.jsp]的HTTP请求的映射 我尝试运行的任何ur

  • 我在配置类中使用spring boot和hibernate。未映射我的实体。请参阅下面的错误。在看了其他一些关于这个的stackoverflow页面后,我仍然无法理解。 我相信以下是正确的:HQL、@实体、@表 错误。 实体。 DAO类 当我将getMessages方法主体替换为以下内容时,它会起作用 数据库表名称为“消息”。 SpringBoot类 Hibernate配置类 我错过了什么?

  • IndexPortion=新建ObjectMapper()。readValue(新文件(路径),IndexPortion。类别);

  • 这应该是一个相对简单的问题,但它让我发疯。我正在尝试在JavaFX中创建扫雷器(主要用于练习),但我甚至无法显示一个简单的矩形。我以前运行过一次游戏,但我试图使游戏更加抽象,因此更容易编码,但我遇到了不显示任何问题。 我消除了所有无关的代码,使其尽可能简单。我基本上是在尝试创建一个名为Box的具有特定颜色和大小的矩形,将框添加到窗格中,并显示窗格。为了使Box成为可以在窗格上显示的节点,我使Box

  • 问题内容: 在非官方指南中有一个占位符答案,带有指向(对我而言)似乎无关的文章的链接。 我使用XJC生成我的JAXB类,尽管它们大多数按预期相互映射,但有些元素被映射到。这对于带有循环的图最令人讨厌,其中有时Foo元素的父节点将是,而它本身没有父属性,从而中断了循环。 我可以想到各种解决方法,但是如果有人可以向我解释这种行为,那就更好了。为什么JAXB有时将元素映射到而不是Foo? 问题答案: 在

  • 背景: 我已经阅读了大量关于如何使用ConfigurationProperties从config中读取列表的示例。。见下文 将Yaml中的列表映射到Spring Boot中的对象列表 https://github.com/konrad-garus/so-yaml https://www.boraji.com/spring-boot-configurationproperties-example .