2013-02-18 5 views
10

Я пытаюсь создать архитектуру веб-приложения среднего размера на Java, и я хотел бы получить несколько советов о том, как это сделать.Модульное веб-приложение с Spring и Maven

Проект состоит из базового сайта и нескольких модулей. Например, один модуль обеспечит регистрацию пользователя, другой модуль будет предлагать веб-службу и т. Д.

Когда мне нужно доставить приложение новому клиенту, идеальной задачей было бы получить модули он хочет, делать некоторые тематические (css, изображения, возможно, jsp) и разрабатывать настраиваемые модули, которые ему могут понадобиться, если они есть.

Я рассмотрел многомодовые проекты maven, военные накладки, но мне трудно разбить приложение, особенно в отношении конфигурации модулей (например, слияние глобальной конфигурации пружин с модулями) , Может ли кто-нибудь указать мне пример такой системы? Заранее спасибо!

ответ

6

слияние конфигурации пружин легко. В каждом модуле упаковывайте файл весеннего контекста в каталог/WEB-INF/classes. Когда вы накладываетесь, все классы и ресурсы в классах WEB-INF в зависимости будут помещены в WEB-INF/классы в вашем приложении. (ps, это также работает, если вы упаковываете как .jar, но вы не сможете накладывать файлы .jsp, если вы это сделаете)

Тогда это просто вопрос их импорта. Это лучше всего сделать, используя набор шаблонов для поиска файлов. Вот пример:

<import resource="classpath*:/module/*-context.xml" /> 

Это будет импортировать все ресурсы класса, соответствующие этому шаблону.

Аннотация основан пример:

@Configuration 
@ImportResource(value={"classpath*:/module/*-context.xml"}) 
public class MyConfiguration { ... } 

Это конфигурация web.xml, что заставит вас больше проблем, чем что-либо, если у вас есть необходимость сделать какие-web.xml настройки модулей. Конечно, вы можете использовать сервлет 3.0 для этого, но для этого нужен правильный сервер.

+1

спасибо за помощь! Я вижу здесь пункт «фрагментировать» файлы конфигурации через модули, когда это возможно. Я думаю, что смогу жить с одним web.xml. Поэтому я собираюсь дать вам эту попытку и посмотреть, что можно сделать с настройкой других технологий (спящий режим, плитки и т. Д.). Я обновлю это. – user683887

+1

Спящий режим может также иметь свои фрагменты. пружинные фабричные бобы для сессионных заводов с гибернацией также имеют сканирование классов (либо .hbm.xml, либо пакетное сканирование) – Matt

1

fwiw, после некоторого опыта с простым весенним ввозом мы разработали крошечный каркас для модульной модуляции osgi-less для весны. Первая проблема с импортом этого имени боба столкновения вы не можете иметь одноименные синглтон в двух контекстах, и много других неприятностей .. TBC https://github.com/griddynamics/banshun

- Майка