Динамическое внедрение карты - PullRequest
0 голосов
/ 08 июля 2019

У меня есть следующее поле, называемое someMap, в которое мне нужно добавить карту во время выполнения, в зависимости от полученных данных.

Я пытался использовать аннотацию @Resource, но она тесно связана с beanId, указанным в файле xml.

@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 для другой разновидности карты, определенной весной xml, скажем, someOtherMap

1 Ответ

0 голосов
/ 08 июля 2019

Вы не можете изменить динамическую аннотацию без , используя Reflection , поэтому вы не можете изменить имя повторного запроса.

 @Resource(name="NAME")

Но очень легко определить два компонента с различным свойством или constrctor-arg .

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

если вам нужно только одно определение бина с разными данными, XML и аннотации не должны работать. фабричный метод или setMethod будут работать для этого, вам нужен код Java.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...