最近,我从使用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>
Java配置为:
@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;
}
两种bean在不同的文件中声明,我在这里将它们分组以便于阅读。该映射也包含引用,而不仅仅是字符串。
我希望能够myMap
在第二个bean中使用,但Spring会注入以下映射:
{ myMap = { a=aValue, b=bValue, c=cValue } }
我不明白为什么Spring会将地图包装到另一个地图中,以及为什么它与XML配置的行为方式不同。
有任何想法吗?
有一个问题@Autowired
-Map甚至定义了bean的名称,并且由于注释,您不能使用建议的@Resource
注释,因此可以使用@Value
定义bean
的注释来替代:
@Bean
public MyClass myBean(@Value("#{myMap}") final Map<String, Object> myMap) {
//..
}
我最近从使用Spring的XML配置切换到Java配置,遇到了一个奇怪的问题。 XML配置为: 有什么想法吗?
在Spring Hibernate XML配置中,我有 我知道SpringJava配置的等价物如下:LocalSessionFactoryBuilder(dataSource())。AddAnnotatedClass(Foo.class)。buildSessionFactory(); 我的问题是,如果我不使用LocalSessionFactoryBuilder类,而是使用HibernateJpaV
本文向大家介绍Windows下maven安装配置图文教程(包括本地化仓库配置),包括了Windows下maven安装配置图文教程(包括本地化仓库配置)的使用技巧和注意事项,需要的朋友参考一下 一、下载maven maven官网:http://maven.apache.org/ 下载下来也就是一个压缩文件,解压。我下载的是3.5.2版本,解压之后如下: 路径为 :D:\Program Files\a
我试图使用-@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。我如何在下面的测试类中实现这一点? 实际测试用例: