Ярлык для ввода строк 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"
/>