Учитывая переход с Java / Spring MVC на Grails - PullRequest
13 голосов
/ 15 июня 2010

В настоящее время я использую Java & Spring (MVC) для создания веб-приложения и планирую перейти на Grails. Буду признателен за обратную связь / понимание следующего:

  1. У меня есть несколько контекстов приложения в текущем веб-приложении Java / Spring, которые я загружаю через web.xml ContextLoaderListener; Возможно ли иметь несколько контекстов приложения в Grails? Если да, то как?

  2. В этом веб-приложении широко используется веб-служба отдыха CXF, а в текущем веб-приложении Java / Spring используется HTTP-клиент CXF. Могу ли я продолжать использовать (Java) CXF HTTP-клиент в Grails?

  3. Я реализовал Spring Security с помощью пользовательской реализации UserDetails и UserDetailsService. Могу ли я повторно использовать эти реализации в Grails «как есть» или я должен заново их реализовать?

  4. В одном случае я использовал шаблон Spring jdbc (а не доступный ORM) и дополнительный источник данных, который я определил в контексте приложения, могу ли я повторно использовать его в Grails?

  5. Я планирую использовать Maven в качестве инструмента управления проектами; Есть ли проблемы с использованием Maven с Grails, где есть сочетание groovy и java?

Edit: Я подумываю о переходе на Grails, чтобы ускорить разработку веб-компонента веб-приложения в стиле Ruby-on-Rails. Кроме того, я рассматриваю Grails, а не Ruby-on-Rails, потому что я хочу продолжать использовать JVM, и в прошлом я баловался с Grails, и его было довольно легко подобрать и использовать.

Ответы [ 4 ]

6 голосов
/ 16 июня 2010
  1. Вероятно.Grails использует подкласс класса Spring ContextLoaderListener, который он настраивает в файле web.xml.Я могу ответить более точно, если вы дадите мне знать, как вы делаете это с Spring MVC.

  2. Да.Возможно, вас даже заинтересует плагин CXF, хотя я не могу за него ручаться:

    http://grails.org/plugin/cxf

  3. Вы сможете использовать их как есть.Однако вы можете проверить, легко ли это сделать с помощью плагина Spring Security.Я верю, что это так, но вы сможете получить окончательный ответ от Берта Беквита, автора плагина.

  4. Да.Вы также можете воспользоваться фабрикой сессий Hibernate, чтобы делать сырые вещи Hibernate.GORM также может работать с несколькими источниками данных:

    http://grails.org/plugin/datasources

    Другой Берт Бек с одним:)

  5. Это зависит от того, что вы подразумеваете под "сочетание Groovy и Java ".Вы можете создавать проекты Grails с Maven, но интеграция не совсем гладкая.Если у вас есть Java и Groovy в вашем проекте Grails, то об этом позаботятся автоматически.

В ответ на Божо я использую стандартные сервисы Grails + GORM и больше ничего не буду делатьпуть.Обратите внимание, что если вы используете Java для сервисов и модель домена, у вас не будет автоматической перезагрузки сервисов.Вы также теряете преимущества выразительности и краткости, которые дает Groovy.

Если вы хотите, вы можете использовать статические типы в сервисах Grails, чтобы упростить в вашей среде IDE завершение кода.Он также может дать вам подсказку о свойствах и методах, которые он не распознает (что соответствует ошибкам компиляции Java).Тем не менее, даже если вы используете статические типы, Groovy не может выполнять проверки типов во время компиляции.Вы узнаете о них только во время выполнения.

0 голосов
/ 21 июня 2010

Если вы ищете быструю разработку приложений, но не особо увлечены Groovy, вам стоит взглянуть на Spring-Roo. Он предлагает тот же тип функциональности RAD, но создает полностью стандартное приложение java + ORM + spring-mvc (которое не имеет реальных зависимостей (время выполнения или компиляция) от roo). Он определенно не такой зрелый, как Grails, но вы можете обнаружить, что он лучше подходит для вашего существующего опыта со статически типизированным Java-кодом и существующим ORM и т. Д. Я выполнил только пару небольших проектов для домашних животных в roo, но я До сих пор впечатлило, в частности, насколько легко настроить сгенерированный код и перемещаться между написанным и сгенерированным кодом. Начальное руководство очень быстрое и довольно показательное.

0 голосов
/ 16 июня 2010

2) Да, вы можете использовать CXF как есть.Над CXF есть хороший слой под названием GroovyWS .Я использовал его только для использования сервисов SOAP, но, возможно, у него тоже есть кое-что для REST.Это действительно легко использовать.Для использования служб REST я использовал HTTP Builder

4) Да.Вы можете продолжать использовать, например, весеннюю конфигурацию для настройки источника данных, или любым другим способом, которым вы делаете это сегодня.Несколько источников данных не проблема.

5) Я недавно пытался использовать Grails (1.2.1) с Maven.Это работает, но были некоторые проблемы с Maven и Grails, пытающимися сделать управление зависимостями.Документация - возможно худшая часть.Я еще не пробовал обновиться до версии 1.3 из-за некоторых основных JIRA, связанных с Maven, но версия 1.3.2 уже не за горами, и эти проблемы теперь решены :) Будет также представлен архетип 1.3.2 maven.С нетерпением жду этого.«Развертывание и разрешение плагинов из репозиториев Maven» - это одна из новых функций Grails 1.3, так что, возможно, дела обстоят лучше.Дорожная карта для 1.3.2 говорит о выпуске сегодня, но на данный момент осталось 8 вопросов, так что я думаю, что завтра будет, релизы Grails обычно вовремя.Если вы можете подождать этого, вы, вероятно, избавите себя от некоторых неприятностей.

0 голосов
/ 15 июня 2010

Вы можете делать все это в Граале. Он поддерживает все существующие классы Java и конфигурации Spring (Grails построен поверх Spring MVC)

Однако я бы не советовал переносить все приложение в Grails. Возможно, вы можете переместить только веб-слой, если у вас есть веб-разработчики, которые не являются экспертами по Java.

Уровень обслуживания, доступ к данным и т. Д. Лучше оставаться чистой Java. То есть только ваши веб-контроллеры - компоненты, которые собирают вводимые пользователем данные, обрабатывают http-запросы и сеансы, должны использовать grails. В остальном - классы обслуживания без сохранения состояния и модель вашего домена будут лучше Java. Это мое мнение, но у меня уже есть некоторый опыт работы с grails, и статическая типизация в слое обслуживания избавит вас от многих проблем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...