2010-03-25 2 views
3

Вот часть моей web.xml:Возможно ли использовать файлы .properties в web.xml в сочетании с параметром contextConfigLocation?

<context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value> 
      classpath:application-config.xml 
     </param-value> 
</context-param> 

приложения config.xml использует свойство заполнитель:

<context:property-placeholder location="classpath:properties/db.properties"/> 

возможно ли это каким-то образом определить, какой файл использовать в web.xml, а свойства чем в application-config.xml?

+0

Как вы получили db.properties в web.xml? Я попытался с $ {property.name}. Но это не работает. – Ani

ответ

4

Да, вы можете использовать ServletContextParameterFactoryBean выставить context-param значение (оно также требует полной формы PropertyPlaceholderConfigurer вместо простого context:property-placeholder):

<bean id = "myLocation" class = 
    "org.springframework.web.context.support.ServletContextParameterFactoryBean"> 
    <property name="initParamName" value = "myParameter" /> 
</bean> 

<bean class = 
    "org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
    <property name="location" ref = "myLocation" /> 
</bean> 

Или использовать Spring 3.0 в EL:

<bean class = 
    "org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
    <property name="location" value = "#{contextParameters.myParameter}" /> 
</bean> 
+6

, если вы, ребята, можете прояснить этот ответ, я уверен, что это поможет многим людям. – euther

4

Полностью согласен с axtavt. Так вся информация совместили самое простое решение с Spring 3.0, таким образом, является:

<context:property-placeholder location="#{contextParameters.propertiesLocation}"/> 

с

<context-param> 
    <param-name>propertiesLocation</param-name> 
    <param-value>classpath:properties/db.properties</param-value> 
</context-param> 

в web.xml.

+0

Итак, этого достаточно, чтобы прочитать свойства из этого файла db.properties и использовать их как в applicationContext.xml, так и в web.xml '$ {yaddayadda}'? –

+1

@Oliver: как вы упомянули выше, есть config.properties, которые необходимо прочитать в web.xml и указанном параметре контекста в web.xml и context-property в app.xml..as параметр init с использованием $ {SystemInfo} в web.xml, но он не отображает отображаемое значение $ {SystemInfo}. –

+0

Привет. Есть ли что-то еще, чтобы заставить это работать? Когда я это делаю, я получаю 'Не удается открыть ресурс ServletContext [/ # {contextParameters.propertiesLocation}]' – thedarklord47