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

Spring Java配置包装注入映射

柯建修
2023-03-14

我最近从使用Spring的XML配置切换到Java配置,遇到了一个奇怪的问题。

XML配置为:

<util:map id="myMap">
    <entry key="a" value="aValue"/>
    <entry key="b" value="bValue"/>
    <entry key="c" value="cValue"/>
</util:map>

<bean id="myBean" class="my.MyClass">
    <property name="myMap" ref="myMap"/>
</bean>
@Bean
public Map<String, Object> myMap() {

    Map<String, Object> myMap = new HashMap<>();
    myMap.put("a", "aValue");
    myMap.put("b", "bValue");
    myMap.put("c", "cValue");

    return myMap;
}

@Bean
public MyClass myBean(@Qualifier("myMap") final Map<String, Object> myMap) {

    MyClass myBean = new MyClass();
    myBean.setMyMap(myMap);

    return myBean;
}
{ myMap = { a=aValue, b=bValue, c=cValue } }

有什么想法吗?

共有1个答案

充普松
2023-03-14

@autowired存在一个问题--在定义bean名称的情况下调用一个映射,因为根据注释,您不能使用建议的@resource注释,所以可以使用@value注释定义bean名称:

@Bean
public MyClass myBean(@Value("#{myMap}") final Map<String, Object> myMap) {
//..
}
 类似资料:
  • 问题内容: 最近,我从使用Spring的XML配置切换到了Java配置,并遇到了一个奇怪的问题。 XML配置为: Java配置为: 两种bean在不同的文件中声明,我在这里将它们分组以便于阅读。该映射也包含引用,而不仅仅是字符串。 我希望能够在第二个bean中使用,但Spring会注入以下映射: 我不明白为什么Spring会将地图包装到另一个地图中,以及为什么它与XML配置的行为方式不同。 有任何

  • 在Spring Hibernate XML配置中,我有 我知道SpringJava配置的等价物如下:LocalSessionFactoryBuilder(dataSource())。AddAnnotatedClass(Foo.class)。buildSessionFactory(); 我的问题是,如果我不使用LocalSessionFactoryBuilder类,而是使用HibernateJpaV

  • 我试图使用-@runwith(SpringJUnit4ClassRunner.class)@ContextConfiguration({“classpath:some.xml”})运行spring JUnit测试用例 xml在内存db详细信息中定义了bean

  • 我对格拉德尔很陌生,我现在正在努力学习。我成功地将gradle配置为一个非常简单的项目。目前我正在努力学习gradle包装器。它规定我不需要在我的系统上下载gradle。我可以在构建中添加任务包装器。gradle文件并运行任务gradle包装器。它应该下载gradle并创建gradlew。蝙蝠档案。 对不起,我太天真了,但我不太明白。如果我的机器上没有安装gradle,将如何运行该任务。 谢谢

  • spring日志中的info消息显示: 示例: 下面有一个简单的示例,可以使用。这里,Bar是嵌套在Foo内部的,我需要模拟Bar进行测试: 现在对于测试来说,假设我想注入一个mockbar而不是真正的bar。我如何在下面的测试类中实现这一点? 实际测试用例:

  • 我正在将旧的xml/java配置转换为纯java配置。在xml中,我将参数注入配置文件,如下所示: 是否可以在爪哇配置中注入参数?(无需使用自动布线! 编辑:使用@Import,我看不到任何将参数注入SpringRestConfiguration的机会