Интеграция Vaadin и Spring MVC

Я думаю о возможности использования Spring MVC с Vaadin Framework. Существуют ли какие-либо задокументированные способы заставить их хорошо играть вместе? Кроме того, это хорошая идея, чтобы использовать их вместе? относящийся к производительности; Я собираюсь запустить приложение на выделенном сервере.

Чтобы сделать мой вопрос немного более ясным, как я могу вернуть модель и представление из контроллера Spring MVC, который будет отображать с помощью Vaadin и может получить доступ ко всем данным модели.


person dakull    schedule 26.07.2009    source источник


Ответы (6)


Поддержка Spring для Vaadin появилась совсем недавно, но в последнее время на форуме было много разговоров об этом, и некоторые тестировали ее. Кажется, работает. Об этом есть статья на вики Vaadin и несколько тем на форуме, посвященных интеграции Vaadin + Spring:

Вики: Spring Integration
Форум: можно ли интегрировать инструментарий itmill с приложением Spring
Форум: Проблема с интеграцией Spring
Форум: Работа с Spring
Форум: Spring Integration

person Jens Jansson    schedule 26.07.2009
comment
Я бы сослался на очень полное SpringApplication: dev.vaadin.com/svn/incubator/SpringApplication< /а> - person rochb; 13.02.2010
comment
Я также искал интеграцию Vaadin с Spring MVC. Ответ, который вы дали, - это интеграция с Spring (внедрение зависимостей и т. д.). Я ничего этого не вижу... Спасибо. - person Michael Bavin; 08.03.2010
comment
Я бы также добавил: dev.vaadin.com/ticket/4132 и vaadin.com/forum/-/message_boards/message/112083, но в основном это одно и то же - person dma_k; 13.10.2010
comment
Я согласен с Майклом Бавином. IoC и Vaadin отличаются от интеграции MVC и Vaadin. В пакете Vaadin есть пример с несколькими приложениями, в котором несколько приложений Vaadin запускаются в одном html. Я надеялся увидеть пример, в котором представление Spring MVC запускает несколько приложений Vaadin. - person lsiu; 10.01.2011

Не уверен, что разумно интегрировать vaadin с Spring MVC. Это пустая трата. MVC предназначен для типичных веб-приложений на основе страниц, где vaadin больше основан на состоянии просмотра, как настольное приложение. Обычно я бы проводил встречу посередине, и весной у меня был бы мой бизнес-уровень и уровень доступа к данным, и я использовал бы Vaadin как есть.

person dhrbo    schedule 17.06.2010

См. эту тему на форуме Vaadin для моего AutowiringApplicationServlet решения, включая пример WAR заявление.

person Archie    schedule 11.05.2010
comment
Более развитое решение теперь доступно в виде надстройки Spring Stuff: vaadin.com/directory#addon. /весенний материал - person Archie; 30.01.2012

согласен с dhrbo.

нецелесообразно использовать spring mvc, тем более с webflow с vaadin. vaadin — еще один фреймворк для веб-приложений.

если вам нужна идея «spring mvc» в вашем проекте vaadin, интегрируйте ее с spring-core, bean-компонентами и контекстом. таким образом вы можете получить четкое разделение между контроллерами, пользовательским интерфейсом (vaadin) и моделями (интегрировать с hibernate/orms)

person gerarldlee    schedule 29.07.2010

Вот статья об интеграции сервисного слоя Spring с Vaadin. Это не имеет прямого отношения к Spring MVC, о котором был первоначальный вопрос, но все же может быть указателем для других читателей, исследующих интеграцию Vaadin Spring.

http://psponcoding.blogspot.com/2011/03/vaadin-spring-integration.html

person psp    schedule 08.03.2011

handleRequest org.springframework.web.servlet.mvc.Controller принимает HttpServletRequest и HttpServletResponse в качестве параметров. Из них вы не можете обработать фрагмент URI. Таким образом, контроллер не подходит для управления запросами на основе фрагмента URI.

В моем приложении я реализовал концепцию, очень похожую на контроллер Spring. В моем приложении все еще есть понятие "представления" и "модель". Каждое представление реализовано в отдельном классе и отображается в центральном блоке страницы. Я хотел централизовать логику обработки URL-адресов в этом классе, поэтому я создал класс AbstractControllerEntry:

public static abstract class AbstractControllerEntry {
    public abstract boolean matches(String fragment);
    public abstract void open(MainWindow window, String fragment);
}

с несколькими удобными подклассами, такими как ConstantEntry, PrefixEntry и RegexEntry.

Каждый класс представления имеет статический метод, который возвращает AbstractControllerEntry. Коллекция всех записей хранится в статическом массиве внутри класса MyController (а не контроллера Spring MVC). При изменении фрагмента (см. UriFragmentUtility) я повторяю все записи, а для первый, который соответствует, я буду называть открытым. Любая другая логика, например поиск объекта модели, находится внутри класса представления, в реализации AbstractControllerEntry.

Кроме того, есть еще один статический метод для создания фрагмента URI в классе представления, так что каждая ссылка на представление является реальной ссылкой на класс, это решение для неработающих ссылок. И у каждого представления есть метод экземпляра для получения фрагмента для текущего представления, который проверяется на соответствие записи контроллера для повышения надежности.

person Oliv    schedule 05.09.2012