Добрый день,
У меня возникла задача написать демон на Яве, раньше с явой работать не приходилось, и появились вопросы как правильно обеспечивать конфигурируемость приложения.
В мире .net делается так: один конфигурационный xml-файл кладется рядом с экзешником и содержит в себе все настройки, которые необходимо в него вынести (например, секция для конфигурирования di-контейнера, секция для веб-сервисов, и т.д.).
В Яве я сейчас наблюдаю следующее:
Есть специальный конфиг для спринга, который, насколько я понял, должен лежать в "src/main/resources" и упаковываться внутрь jar-ника.
Допустим этот конфиг содержит:
<bean id="webServiceProxy"
class="org.springframework.remoting.jaxws.JaxWsPortProxyFactoryBean"
p:serviceInterface="services.SomeWebService"
p:wsdlDocumentUrl="
http://localhost:8888/SomeWebService?wsdl"
...
Еще есть .properties-файлы, которые содержат общие настройки не относящиеся к специфическим фреймворкам.
От меня требуется предоставить пользователю удобный способ менять настройки, например, адрес сервиса в вышеприведенном примере.
Подход, который я вижу сейчас, мне кажется неудобным по следующим причинам:
1. чтобы менять настройки нужно пересобирать jar-ник.
2. работа со строками вида 'p:wsdlDocumentUrl="
http://localhost:8887/SomeWebService?wsdl"' зарытыми глубоко внутрь описания бинов мне кажется весьма неудобной. Хотелось бы чего-нибудь более юзер-френдли, наподобие тех же .properties-файлов.
3. настройки приложения рассыпаны по разным местам. В идеале все должно лежать рядом.
Собственно вопрос, как "правильно" все это принято в яве организовывать, что считается Best Practice?