我通过执行以下操作在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>
....
但我同意这一建议,即最终应该将其归入财产并传入。
答案 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"
/>