gpt4 book ai didi

java - 动态注入(inject) map

转载 作者:行者123 更新时间:2023-12-02 03:20:07 28 4
gpt4 key购买 nike

我有一个名为 someMap 的字段,我需要在运行时根据收到的输入注入(inject)一个映射。

我尝试使用 @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

最佳答案

如果没有using Reflection,您就无法更改注释动态,因此您无法更改 reousece 的名称。

 @Resource(name="NAME")

但是定义两个具有不同属性的bean非常容易或constrctor-arg

    <bean id="boss" class="***">
<property name="mydata">
<bean class="HashMap">
</bean>
</property>
</bean>

如果您只想要一个具有不同数据的 bean 定义,则 XML 和注释不应该起作用。工厂方法或 setMethod 都可以,你需要一些 java 代码。

关于java - 动态注入(inject) map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56931886/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com