【问题标题】:How to define a map property in a separate XML file (in Spring)?如何在单独的 XML 文件中定义地图属性(在 Spring 中)?
【发布时间】:2011-05-25 23:18:27
【问题描述】:

假设一个项目使用 Spring 并在 XML 中定义它的 bean?它有一些在构造函数中接受 Map 的 bean。

通常,此映射被定义为 bean 下的属性,并且在其下具有条目。

但是如果条目列表很大怎么办?它会使 XML 膨胀很多次...

它(地图)能否以某种方式在 XML 文件中定义,然后由需要它的 bean 引用?怎么样?

【问题讨论】:

    标签: spring code-injection


    【解决方案1】:

    是的,使用<util:map> 语法(参见docs),例如

    beans1.xml

    <util:map id="myMap">
        <entry .../>
        <entry .../>
        <entry .../>
        <entry .../>
    </util:map>
    

    beans2.xml

    <import resource="beans1.xml"/>
    
    <bean id="..." class="...">
       <constructor-arg ref="myMap"/>
    </bean>
    

    【讨论】:

    • 我可以用注释和SpEL做同样的事情吗? (一个单独的 bean 类,代表地图,被注释为用 EL 注入它的条目)
    【解决方案2】:

    skaffman 的回答对我有用。但是,要设置 XML 命名空间,beans1.xml 应该如下所示:

    <?xml version="1.0" encoding="UTF-8"?>
    <util:map id="myMap" 
        xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:util="http://www.springframework.org/schema/util"
        xsi:schemaLocation="
          http://www.springframework.org/schema/beans
          http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
          http://www.springframework.org/schema/util
          http://www.springframework.org/schema/util/spring-util.xsd">
    
        <entry key="myKey" value="myValue" />
    
    </util:map>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-28
      • 1970-01-01
      • 1970-01-01
      • 2022-01-06
      • 1970-01-01
      • 2015-06-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多