我想从面向组件的地图中使用旧的util:map
XML注释。我在这个问题上磕磕绊绊。我已经设法改变第一个,使用这种类型的配置:
映射的bean:
@Autowired
private Map<String, MyType> typeMap;
对于每个Bean:
@Component("firstType")
public FirstType implements MyType {}
然后简单地呼叫:
typeMap.get("firstType");
就像一个魅力。但是,这是其他地图的实现方式:
<util:map id="routingMap">
<entry key="one" value-ref="firstReference" />
<entry key="two" value-ref="firstReference" />
<entry key="three" value-ref="firstReference" />
<entry key="four" value-ref="secondReference" />
<entry key="five" value-ref="secondReference" />
<entry key="six" value-ref="secondReference" />
<entry key="seven" value-ref="thirdReference" />
<entry key="eight" value-ref="secondReference" />
<entry key="nine" value-ref="secondReference" />
</util:map>
如您所见,有多个键引用firstReference
和secondReference
。有没有办法用这样的注释模拟这个:
@Component(values = "one", "two", "three")
并取得类似的结果?或者使用Spring注释无法做到这一点?
答案 0 :(得分:0)
使用@Component
无法做到这一点,此https://jira.spring.io/browse/SPR-6736有一张打开的彩票。
但是,您可以使用@Bean
来实现此目的
从您的实现类中删除@Component
。
public FirstType implements MyType {}
像这样创建一个配置类
@Configuration
Class Config {
@Bean(name = "one", "two", "three")
public FirstType myFirstTypeMethod() {
return new FirstType();
}
}