|
Java форум JavaTalks форум программистов
|
|
|
|
| Предыдущая тема :: Следующая тема |
| Автор |
Сообщение |
ffhTTy : 77 Новичок
|
Янв 10, 2012 23:03 |
|
|
Доброго времени суток,
Как правильно выполнить инициализацию Spring приложения? В случае с обычным понятно - там входная точка main и от нее побежали.
Задача простая, на старте аппликации забрать пару конфигов с удаленных машин и выставить дефолтные настройки. Куда обычно впихивают такой код... |
|
|
|
 |
Vlad : 1670 JavaTalks Team Member Откуда: ODS-KRK-LON-HFE
|
Янв 11, 2012 20:41 |
|
|
Для standalone приложенния - ты уже ответил, в main создаём Spring контекст:
| Код: |
ApplicationContext context =
new ClassPathXmlApplicationContext("META-INF/context.xml");
|
или
| Код: |
ApplicationContext context =
new FileSystemXmlApplicationContext("path/to/context.xml"); |
Для веб-приложения точкой входа является ServletContextListener или web.xml, в который нужно добавить:
| Код: |
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>WEB-INF\applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
|
Можно добавить ещё и свой ServletContextListener (как обёртка для спрингового), если нужно выполнить дополнительные шаги инициализации.
Это отвечает на твой вопрос? _________________ @follow |
|
|
|
 |
ffhTTy : 77 Новичок
|
Янв 12, 2012 16:46 |
|
|
Спасибо. Нет, все же я не совсем понимаю как к объявлению ContextListener добавить полезный код.
Насколько я понял, ответ на мой вопрос init-method или @PostConstruct. |
|
|
|
 |
Vlad : 1670 JavaTalks Team Member Откуда: ODS-KRK-LON-HFE
|
Янв 13, 2012 0:01 |
|
|
В интерфейсе ServletContextListener есть метод contextInitialized, в реализации которого можно сделать загрузку удалённых конфигов и их модификацию, а потом вызвать Spring-овый ContextLoaderListener (в этом случае в web.xml нужно регистрировать свой лисенер вместо спрингового). Или можно сохранить подготовленный(ые) файл(ы) конфигурации в локальной временной папке, на которую указывает параметр contextConfigLocation (в этом случае нужно оставить спринговый лисенер, а свой добавить перед ним).
П.С. Было бы больше времени, написал бы пример кода. Но думаю и так должно быть понятно. _________________ @follow |
|
|
|
 |
ffhTTy : 77 Новичок
|
Янв 13, 2012 17:32 |
|
|
| Вполне понятно, дальше разберусь. Спасибо. |
|
|
|
 |
|
|
|