代码之家  ›  专栏  ›  技术社区  ›  naumcho

为字符串注入弹簧的快捷方式

  •  12
  • naumcho  · 技术社区  · 11 年前

    我通过执行以下操作在spring配置中注入字符串:

    <bean class="java.lang.String">
        <constructor-arg type="java.lang.String" value="Region" />
    </bean>
    

    有更短的方法吗?

    更新: 我使用的是弹簧3.0.3。

    这些实际上用于填充列表:

            <list>
                <bean class="java.lang.String">
                    <constructor-arg type="java.lang.String" value="Region" />
                </bean>
                ...
    

    看起来这样有效:

    <list>
       <value>Region</value>
       <value>Name</value>
       ....
    

    但我同意这样的建议,即这最终应该进入一处房产并被移交。

    3 回复  |  直到 11 年前
        1
  •  14
  •   Sotirios Delimanolis    11 年前

    你不应该 String 豆。直接使用它们的价值。

    创建财产文件 strings.properties 并将其放在类路径上

    strings.key=Region
    

    宣布 PropertyPlaceholderConfigurer

    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="location">
            <value>strings.properties</value>
        </property>
    </bean>
    

    然后将实例字段Strings注释为

    @Value("${strings.key}")
    private String key;
    

    Spring将从 字符串.属性 文件到此 key 一串

    这显然假设 @Value 出现的注释是在与 属性占位符配置程序 .

        2
  •  4
  •   Aaron Digulla    11 年前

    没有必要创建类型为的bean String 。只需将值传递给 constructor-arg :

    <bean id="foo" class="x.y.Foo">
        <constructor-arg value="Region"/>
    </bean>
    

    作品

        3
  •  0
  •   ikumen    11 年前

    除了其他答案之外,如果您使用的是Spring3.1+,您还可以使用构造函数命名空间。

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
      xmlns:c="http://www.springframework.org/schema/c" <-- add c namespace
      ...
    
    <bean id="someClass" class="a.b.c.SomeClass"
      c:someProperty="Region"
    />