2009-05-01 2 views
0

Могу ли я сделать что-то вроде этого:в Spring.config, могу ли я определить объект типа string?

<object id="mydb" type="string"> 
    <value>"blah"</value> <-- note that <value> tag does not really exist 
    </object> 

Так что я мог бы использовать его позже, как так:

<object id="Someobject" type="Sometype"> 
    <property name="ConnectionString" ref="mydb"/> 
    </object> 

EDIT: это было SpringFramework.NET решение, которое я искал. Похоже, PropertyPlaceholderConfigurer существует и там. Спасибо всем.

ответ

2

Использования Spring встроенного PropertyPlaceholdConfigurer:

<bean id="PropertyPlaceholderConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
    <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE"/> 
    <property name="location" value="classpath*:/application.properties"/> 
</bean> 

<bean id="Someobject" class="somepackage.Sometype"> 
    <property name="connectionString" value="${mydb}"/> 
</bean> 

Установка SYSTEM_PROPERTIES_MODE_OVERRIDE позволяет переопределение свойства с помощью командной строки.

+0

+1 - PropertyPlaceholderConfigurer, который я использую, за исключением переопределения свойств системы. В этом нет необходимости. – duffymo

0

Я не вижу никакого преимущества для вашего пути вообще. Это все еще только конфигурация.

Иногда люди вытесняют строки подключения базы данных к файлу .properties и попадают в них таким образом. Я думаю, что это имеет больше смысла, чем ваше предложение.

+0

Преимущество состоит в том, чтобы не иметь одну и ту же строку, указанную в 300 местах в ваших дюжинных файлах конфигурации. – zvolkov

+0

Нет никакого преимущества - у меня нет ничего более одного раза, и у меня нет десятков конфигурационных файлов. Если вы это сделаете, вы не используете Spring. – duffymo

+0

У меня есть решение с ~ 25 проектами. Некоторые из проектов реализуют библиотеки, используемые в нескольких других проектах. – zvolkov

1

Используйте заполнители, например $ {magic} и определите ключ/значение в файле свойств вместе с PostProcessor. Google для ярового постпроцессора заполнителя ...

Смежные вопросы