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

时间:2013-09-03 15:38:13

标签: java spring

我通过执行以下操作在Spring配置中注入了Strings:

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

有更短的方法吗?

更新 我正在使用spring 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 个答案:

答案 0 :(得分:13)

你不应该有String个豆子。只需直接使用它们的价值。

创建属性文件strings.properties并将其放在类路径

strings.key=Region

声明PropertyPlaceholderConfigurer

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

然后将实例字段标记为

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

Spring会将strings.properties文件中的值注入此key字符串。

这显然假设出现@Value注释的类是在与PropertyPlaceholderConfigurer相同的上下文中管理的bean。

答案 1 :(得分:4)

无需创建String类型的bean。只需将值传递给constructor-arg

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

作品。

答案 2 :(得分:0)

除了其他答案之外,如果你使用的是Spring 3.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"
/>