[英]Dynamically Injecting a Map
我有一个名为someMap的以下字段,在该字段中,我需要根据收到的输入在运行时注入地图。
我尝试使用@Resource
注释,但它与xml文件中指定的beanId紧密耦合。
@Resource(name="someMap")
private final Map<String,String> someMap;
<bean id="someMap" class="java.util.HashMap">
<constructor-arg>
<map>
<entry key="Engraving1" value="@Engraving1" />
<entry key="Engraving2" value="@Engraving2" />
<entry key="Engraving3" value="@Engraving3" />
<entry key="LeaveBlank" value="@LeaveBlank" />
</map>
</constructor-arg>
</bean>
<bean id="someOtherMap" class="java.util.HashMap">
<constructor-arg>
<map>
<entry key="Descirption" value="@Desc" />
<entry key="Engraving2" value="@Engraving2" />
<entry key="Engraving3" value="@Engraving3" />
<entry key="UniqueId" value="$60034" />
</map>
</constructor-arg>
</bean>
我想要的是摆脱这种紧密的耦合,并将someMap字段初始化为spring xml中定义的Map的另一种风味,让我们说someOtherMap
如果不使用Reflection ,则不能动态更改注释,因此不能更改reousece的名称。
@Resource(name="NAME")
但是定义两个具有不同属性或constrctor-arg的 bean非常容易。
<bean id="boss" class="***">
<property name="mydata">
<bean class="HashMap">
</bean>
</property>
</bean>
如果您只想要一个具有不同数据的bean定义,则XML和Annotation不起作用。 工厂方法或setMethod将适用于此方法,您需要一些Java代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.