2015-05-04 4 views
1

Чтение this и that Я мог бы легко настроить мой environment в веб-приложении.Индивидуальное управление собственностью с весной 4.x

Моя настройка довольно проста: у меня есть файлы свойств, упакованные в мой файл для развертывания войны, и я хотел бы иметь локальный файл свойств на моей машине веб-сервера, который переопределит эти свойства в случае перекрытия. Для этого я реализовал интерфейс ApplicationContextInitializer, загрузил мой файл локальных свойств и использовал метод addFirst моего environment. Это заставило мой локальный файл переопределить файлы свойств, упакованные в мою войну.

Это сработало отлично. Теперь я хотел бы сделать то же самое в java-spring process (а не в веб-приложении). Как я могу это сделать?

Лучшее решение, которое я нашел до сих пор, заключается в том, чтобы добавить метод к моему классу configuration и аннотировать его аннотацией @PostConstruct. Этот метод делает именно то, что инициализирует метод ApplicationContextInitializer.

Это решение не удовлетворяет моим потребностям, так как у меня есть некоторые компоненты, которые являются loaded conditionally, и это (код conditional annotation) происходит до моего метода @postConstruct (что не хорошо, поскольку условная загрузка основана на моих свойствах).

ответ

0

я получил за нее загрузки нескольких свойств-источников:

@Configuration 
@ComponentScan("com.company.project") 
@PropertySources({ @PropertySource(value = "classpath:/my-jar-properties-file.properties", ignoreResourceNotFound = false), 
    @PropertySource(value = "file:/path/to/file/local.filesystem.properties.file.properties", ignoreResourceNotFound = false) }) 
public class MyConfiguration { ... } 

Таким образом, последние свойства файла будет перекрывать предыдущие, поэтому простой ..

0

Для управления недвижимостью вы можете использовать , что позволяет загружать файлы свойств в соответствующем порядке с помощью переопределений. В XML формируют ваш конфиг будет выглядеть следующим образом:

<bean id="propertiesConfigurer" 
     class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
    <property name="ignoreResourceNotFound" value="true" /> 
    <property name="locations"> 
     <list> 
      <value>classpath:jar.file.properties</value> 
      <value>classpath:overrides.properties</value> 
     </list> 
    </property> 
</bean> 

недвижимости «ignoreResourceNotFound» будет защищать приложение от исключений запуска, когда «overrides.properies» отсутствует.

+0

Сначала я не использую propertiesConfigurer управлять моим свойства, я использую Spring Environment. Во-вторых, переопределяющий файл не загружается из пути к классам, а из фиксированного пути в файловой системе. – forhas

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