Ярлык для ввода строк spring
Я вставляю строки в моей конфигурации spring, выполняя следующие действия:
<bean class="java.lang.String">
<constructor-arg type="java.lang.String" value="Region" />
</bean>
Есть ли более короткий способ сделать это?
Update:
Я использую 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>
....
Но я согласен с предложениями, что это должно в конечном итоге перейти в свойство и быть передано.
Ответы
Ответ 1
У вас не должно быть String
beans. Просто используйте их значение напрямую.
Создайте файл свойств 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
, является bean, управляемым в том же контексте, что и PropertyPlaceholderConfigurer
.
Ответ 2
Нет необходимости создавать bean типа String
. Просто передайте значение constructor-arg
:
<bean id="foo" class="x.y.Foo">
<constructor-arg value="Region"/>
</bean>
работы.
Ответ 3
В дополнение к другим ответам, и если вы используете 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"
/>