Разделител на стойността по подразбиране на заместител на свойство

Малък въпрос. Използваме Spring 3.1 и изглежда имаме проблем с разделителя на стойността (стойността по подразбиране, която е).

<context:property-placeholder ignore-resource-not-found="false" ignore-unresolvable="false" location="${app-conf-base-path:classpath:}environment/app-conf-${spring.profiles.active:test}.properties" />

Ние филтрираме свойствата, които се внедряват въз основа на профили на среда maven. Ако не е осигурен профил на среда на maven, всички файлове със свойства на средата ще бъдат заредени във войната и поставени в пътеката на класа. Действителните специфични за средата настройки се зареждат по време на изпълнение с помощта на пролетни профили. Частта, която обаче ни създава проблем, е ${app-conf-base-path:classpath:}, защото изглежда, че той не може да разреши това. Вярвам, че това е така, защото контейнерът е разделен с помощта на последното появяване на разделителя на стойността по подразбиране. Защо искаме това е, защото искаме той да търси в app-conf-base-path, освен ако това не е дефинирано като JVM параметър. В такъв случай той трябва да погледне в classpath.

Опитах:

  • Конфигуратор на контейнер с разделител на стойност == '?' без резултат.

Някой има ли идея за алтернатива?


person Peter De Winter    schedule 14.11.2012    source източник


Отговори (1)


Реших проблема, като се уверих, че външните конфигурационни файлове се добавят към classpath на сървъра при зареждане на неговите програми за зареждане на класове. По този начин нямам нужда от контейнер, който да сочи към местоположение тип file://. Добавих експортен ред към setclasspath.sh на tomcat, за да добавя външния файл към променливата на средата CLASSPATH.

person Peter De Winter    schedule 14.11.2012