有人可以告诉我如何使用Map对象连接以下构造函数而不使用XML,只使用注释?有可能吗?
public class MyClass {
...
public MyClass (final Map<String, SomeBean> map) {
this.map = map;
}
...
}
当前的XML我想摆脱:
<bean id="mybean" class="my.package.MyClass">
<constructor-arg>
<util:map>
<entry key="KEY1" value-ref="ref-bean1" />
<entry key="KEY2" value-ref="ref-bean2" />
</util:map>
</constructor-arg>
</bean>
<bean id="ref-bean1" class="my.package.SomeBean">... </bean>
<bean id="ref-bean2" class="my.package.SomeBean">... </bean>
答案 0 :(得分:1)
假设您的Spring配置已配置为注释配置,您应该能够通过将myBean
的构造函数标记为MyClass
来消除@Autowired
声明。
public class MyClass {
...
@Autowired
public MyClass (final Map<String, SomeBean> map) {
this.map = map;
}
...
}
Spring将尝试使用由bean名称键入的MyClass
Map
个实例连接SomeBean
构造函数。
由于配置了SomeBean
的单独实例(可能是他们自己的状态),因此您需要将这些实例保留在XML中。
<bean id="KEY1" class="my.package.SomeBean">... </bean>
<bean id="KEY2" class="my.package.SomeBean">... </bean>
或者,正如LaurentG所说,总是@Configuration
。