복붙노트

[SPRING] 자바 스프링스에서 <String, List> 맵을 삽입하는 방법?

SPRING

자바 스프링스에서 맵을 삽입하는 방법?

어떻게 자바 봄 프레임 워크에서지도를 주입? 가능한 경우 몇 가지 샘플 코드를 제공하십시오.

다음은 합법적입니까?

<property name="testMap">
    <map>
        <entry>
            <key>
                <value>test</value>
            </key>
            <value>
                <list>
                    <value>String</value>
                    <value>String</value>
                </list>
            </value>
        </entry>
    </map> 
</property>

해결법

  1. ==============================

    1.applicationContext.xml 내에서 먼저 이와 같이 Map을 정의하십시오.

    applicationContext.xml 내에서 먼저 이와 같이 Map을 정의하십시오.

    <util:list id="list1">
        <value>foo@bar.com</value>
        <value>foo1@bar.com</value>
    </util:list>
    
    <util:list id="list2">
        <value>foo2@bar.com</value>
        <value>foo3@bar.com</value>
    </util:list>
    
    <util:map id="emailMap" value-type="java.util.List">
        <!-- Map between String key and List -->
        <entry key="entry1" value-ref="list1" />
        <entry key="entry2" value-ref="list2" />
        ...
    </util:map>
    

    그런 다음이 맵을 다음과 같이 자신의 bean에서 사용하십시오.

    <bean id="myBean" class="com.sample.beans">
        <property name="emailMap" ref="emailMap" />
    </bean>
    
  2. ==============================

    2.콩 구성 xml을 처리 할 때 봄이 org.xml.sax.SAXParseException을 throw 할 때 구문이 올바르지 않다고 생각합니다.

    콩 구성 xml을 처리 할 때 봄이 org.xml.sax.SAXParseException을 throw 할 때 구문이 올바르지 않다고 생각합니다.

    주변의 태그를 제거한 후에 작동해야합니다.

    <property name="testMap">
        <map>
            <entry>
                <key>
                    <value>test</value>
                </key>
    
                 <list>
                        <value>String</value>
                        <value>String</value>
                 </list>
            </entry>
        </map> 
    </property>
    
  3. ==============================

    3.이것이 나의 예이다.

    이것이 나의 예이다.

    <bean class="com.common.handlermgmnt.HandlerMapAdder">
        <constructor-arg index="0" type="java.util.Map">
            <map key-type="java.lang.String" value-type="com.common.ViewWidget">
                <entry key="DefaultView">
                    <bean class="com.common.DefaultViewWidget"/>
                </entry>
                <entry key="AnotherView">
                    <bean class="com.common.AnotherViewWidget"/>
                </entry>
            </map>
        </constructor-arg>
        <constructor-arg index="1" type="com.common.handlermgmnt.HandlerManager" ref="widget_handlerManager"/>
    </bean>
    
  4. ==============================

    4.이 사건을 직접 만났어. 목록 값을 별도의 빈으로 재사용 할 필요가 없다면 'value-ref'를 사용하지 않고도이 짧은 버전을 사용할 수 있습니다.

    이 사건을 직접 만났어. 목록 값을 별도의 빈으로 재사용 할 필요가 없다면 'value-ref'를 사용하지 않고도이 짧은 버전을 사용할 수 있습니다.

    <util:map id="mymap">
        <entry key="key1">
            <util:list>
                <value>val1</value>
                <value>val2</value>
            </util:list>
        </entry>
        <entry key="key2">
            <util:list>
                <value>val2</value>
                <value>val3</value>
                <value>val4</value>
            </util:list>
        </entry>
    </util:map> 
    

    그리고, 다음과 같이 Java 코드에서 와이어 링하십시오.

    @Resource(name="mymap")
    Map<String, List<String>> mapKey_List;
    
  5. ==============================

    5.SpEL을 사용하여 주사하십시오. #{신분증}. 이것은 나를 위해 작동합니다.

    SpEL을 사용하여 주사하십시오. #{신분증}. 이것은 나를 위해 작동합니다.

    .xml :

    <util:map id="roleLocationMap">
        <entry key="ROLE_ADMIN" value-ref="listA" />
        <entry key="ROLE_USER" value-ref="listB" />
    </util:map>
    

    .java

    @Autowired
    public MainController(
            @Value("#{roleLocationMap}") final Map<String, List<String>> roleLocationMap) {
        this.roleLocationMap = roleLocationMap;
    }
    
  6. from https://stackoverflow.com/questions/5348310/how-to-inject-a-mapstring-list-in-java-springs by cc-by-sa and MIT license