Поддерживает ли Spring вложенные свойства в нескольких файлах свойств?

Я хотел бы разделить свойства в нескольких файлах и разрешить файлам, загруженным позже, иметь свойства, которые ссылаются или объединяют свойства, определенные ранее (вложенные). Например:

application.properties (например, dbName=test, dbHost=targethost) mysql.properties (например, jdbcDriver=com.mysql.jdbc.Driver, jdbcUrl=jdbc:mysql://${dbHost:localhost):${dbPort:3306}/ ${имя_дб})

И я использую такие объявления, как:

<context:property-placeholder location="classpath:application.properties" order="0" ignore-unresolvable="false"/>
<context:property-placeholder location="classpath*:${dbType:mysql}.properties" order="1" ignore-unresolvable="false"/>

<bean id="dataSource" class="com.jolbox.bonecp.BoneCPDataSource" destroy-method="close">
    <property name="driverClass" value="${jdbcDriver}"/>

Когда я пытаюсь создать источник данных в конфигурации Spring, я получаю сообщение об ошибке, говорящее о том, что ${dbName} или ${jdbcDriver} не разрешены.

Например:

Could not resolve placeholder 'jdbcDriver' in string value "${jdbcDriver}";

Может ли кто-нибудь пролить свет, если можно таким образом организовать свойства в разные файлы, и если да, то как настроить Spring для правильного разрешения свойств, чтобы мое объявление bean-компонента не завершилось ошибкой?

Заранее спасибо.


person user2259448    schedule 11.10.2014    source источник
comment
Вы можете использовать плагин ресурсов maven для фильтрации свойств гнезда. PS: Я полагаю, что такие свойства, как ${name:default}, не поддерживаются в файле .properties?   -  person hsluo    schedule 11.10.2014
comment
Мало того, @hsluo, но если у вас есть три файла свойств, и C ссылается на свойства в B, а также B ссылается на свойства в A, ни одно из свойств в B или C не разрешается. Ищите базовый пример того, как заставить это работать, или откажитесь от него и используйте Guice или какую-либо другую альтернативу Spring.   -  person user2259448    schedule 11.10.2014
comment
Ошибка пользователя с моей стороны. У меня был незавершенный ${ . Была опечатка, где завершающий символ был ) вместо }. Трудно увидеть и занял день, чтобы диагностировать.   -  person user2259448    schedule 13.10.2014
comment
так пример работает?   -  person hsluo    schedule 13.10.2014
comment
да. в одном из файлов была опечатка, и сообщения об ошибках были не такими уж полезными. я нашел другие проблемы, связанные с контекстом: свойство-заполнитель, известная ошибка двух лет, когда они просто не работают: jira.spring.io/browse/SPR-9989. Преимущество XML и заполнителей в том, что вся конфигурация не попадает в код. Компромиссы, как я их вижу, якорь для лодки (Spring), который легко ошибиться и трудно диагностировать, или мини-велосипед (Guava), который требует множества дополнений, чтобы сделать его пригодным для использования в любом практическом смысле.   -  person user2259448    schedule 13.10.2014
comment
Мой выбор... Я, скорее всего, выберу Spring, у меня нет времени тратить время на модернизацию поддержки заполнителей поверх Guava, а то, что у Guava есть для болтонов, довольно дрянное.   -  person user2259448    schedule 13.10.2014
comment
Возможный дубликат Загрузка вложенных заполнителей из файла свойств с помощью Spring   -  person Stewart    schedule 24.03.2017