2014-01-29 4 views
4

Я пытаюсь использовать Spring <context:property-placeholder> в своем приложении в первый раз и сталкиваясь с некоторыми проблемами, я уже много пробовал и Google, и кажется, что несколько сообщений над SO.Не удалось определить местозаполнитель | Spring Placeholder

Я имею веб-приложение и нужно передать некоторые ключи к основному классу, имел в виде использовать держатель места для same.Here структура моего приложения

Main 
    -java 
    -resources 
    -webapp 

У меня есть project.properties файла, который внутри resource папки, это то, как я пытаюсь

<context:property-placeholder location="classpath:resources/project.properties" /> 
<beans:bean id="reCaptcha" class="net.tanesha.recaptcha.ReCaptchaImpl"> 
    <beans:property name="privateKey" value="${demo.recapatcha_private_key}"/> 
    <beans:property name="publicKey" value="${demo.recapatcha_public_key}"/> 
</beans:bean> 

Но я получаю следующее исключение при запуске сервера

org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name 'reCaptcha' defined in ServletContext resource [/WEB-INF/spring/appServlet/servlet-context.xml]: Could not resolve placeholder 'demo.recapatcha_private_key' 

Я уже пытался размещением project.properties файла на различном месте, которое включает в WEB-INF/classes и несколько других мест на webapp но не success.not уверены, что я делаю неправильно

ответ

6

Это звучит так, как будто вы используя структуру проекта Maven. Размещение project.properties внутри src/main/resources - обычная практика для файлов ресурсов - поскольку Maven автоматически перенесет их в путь класса конечного артефакта, который будет /WEB-INF/classes внутри вашей войны.

Однако, вы должны изменить атрибут location тэга <context:property-placeholder> и удалить префикс папки resources. Сама папка resources не переносится на /WEB-INF/classes, когда файл войны построен - и поэтому не будет частью пути к среде выполнения. Просто содержимое папки переносится.

<context:property-placeholder location="classpath:project.properties" /> 
+1

Я уже попробовал то, что вы предложили, но безуспешно, Infact мое понимание было так же, как вы изложены –

+0

ли '<контекст: свойство-заполнитель>' декларации и сами все заполнители, определенные в 'servlet- context.xml'? –

+0

Да, оба они определены в одном файле с одинаковой последовательностью. –

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