Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用弹簧注入字符串的快捷方式_Java_Spring - Fatal编程技术网

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

Java 使用弹簧注入字符串的快捷方式,java,spring,Java,Spring,我通过执行以下操作在spring配置中注入字符串: <bean class="java.lang.String"> <constructor-arg type="java.lang.String" value="Region" /> </bean> 有没有较短的方法 更新: 我正在使用Spring3.0.3 它们实际上用于填充列表: <list> <bean class="java.lan

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

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

有没有较短的方法

更新: 我正在使用Spring3.0.3

它们实际上用于填充列表:

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

...
这似乎有效:

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

区域
名称
....

但我同意这样的建议,即这应该最终进入属性并传入。

您不应该拥有
String
bean。直接利用它们的价值

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

strings.key=Region
声明一个
PropertyPlaceHolderConfigure

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="location">
        <value>strings.properties</value>
    </property>
</bean>
Spring将把
strings.properties
文件中的值注入这个
字符串


这显然假设出现
@Value
注释的类是在与
属性PlaceHolderConfigure
相同的上下文中管理的bean,不需要创建
字符串类型的bean。只需将值传递给构造函数arg

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


有效。

除了其他答案,如果您使用的是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"
/>


哪个版本的Spring?你是如何使用它的?你不能用
value=“Region”
来代替这个bean吗?这不是非法的兴奋剂吗?请注意,你也可以在构造函数参数上使用
@value
。我不认为这比简单地通过字符串构造函数作为字符串类的bean(asker已经执行过)更短、更有效。有什么意义吗?@ BelsEdgEK一个,你不应该把一个<代码>字符串< /代码>看作一个bean。Spring不会像某些
@Service
类实例那样真正管理
字符串的生命周期。您应该考虑原始类型,即“代码>字符串,和<代码>类< /C>作为Spring处理的基类型,而不是bean。一旦声明了
PropertyPlaceHolderConfigure
,就可以声明任意多的属性(而不是
声明),并使用占位符符号
${..}
@BlessedGeek引用它们以了解实现细节,管理
声明不再需要完整的Spring对象树。每个声明的源只需要一个
属性
对象(ymmv)(可以有多个
位置
)。如果字符串的值为${your.prop},而不是实际属性,请参阅帮助
<?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"
/>