Статьи

Играя с Спринг Роо и Ваадином

Год назад под нежным давлением коллеги я попробовал Spring Roo. У меня были смешанные чувства по поводу этого опыта: хотя повышение производительности было, конечно, хорошей идеей, я беспокоился о навязчивости Ру. Я оставил это на этом, и закрыл часть моей памяти, связанной с этим.

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

Чистый Ру

Прежде всего, я загружаю бесплатный STS 2.5 , который включает Roo 1.1.1, и устанавливаю его. Нет проблем в это время. Затем я создаю новый проект Spring Roo внутри STS. К сожалению, STS не создает стандартные каталоги maven (src / main-test / java-resources): ошибки появляются на моей вкладке «Проблемы». Пытаясь решить проект, я набираю команду проекта в оболочке Ру в STS. Ру жалуется, что я должен дать ему свой пакет верхнего уровня, хотя я уже сделал это с мастером. ОК, я хороший парень и делаю так, как просили

project --topLevelPackage ch.frankel.blog.roo.vaadin

На этот раз Roo успешно создает вышеупомянутые каталоги, а также файл конфигурации Spring и файл свойств log4j.

Следующим шагом является создание моего слоя постоянства. Использование CTRL + SPACE очень приятно и очень помогает с параметрами команды. В сочетании с подсказкой очень легко освоиться с Roo.

persistence setup --provider HIBERNATE --database DERBY

Ру приятно обновляет мой Maven POM и позволяет загружать последние версии правильных зависимостей (JPA, Hibernate, Derby и т. Д.). Я всегда могу изменить версию, если мне нужна конкретная. Он даже добавляет репозиторий JBoss Maven, чтобы я мог скачать Hibernate. Мне просто нужно обновить свойства базы данных, драйвер и URL. О-о-о: когда я открываю файл, я вижу, что у Roo странные экранированные символы двоеточия с обратной косой чертой. Я просто заменяю приведенный в качестве примера URL-адрес на реальный.

Тем временем в журнале я вижу ошибку: «POM для org.aspectj: aspectjtools: jar: 1.6.11.M1 отсутствует, информация о зависимостях отсутствует». Roo обновил мой POM до версии 1.6.11.M1. Если я проверю на repo1, последняя версия 1.6.10. Замена 1.6.11.M1 на 1.6.10 устраняет ошибку.

Сейчас самое время создать мою первую сущность:

entity --class ~.entity.Teacher --testAutomatically

STS теперь жалуется, что целевой каталог не существует, как прежде, чем жаловался на исходные каталоги. Чтобы исправить это, я просто делаю, как раньше, запускаю инструкцию. В этом случае я приказываю Roo запускать тесты с помощью команды execute test. В свою очередь, Roo запускает mvn test под капотом, а Maven создает целевой каталог.

Сущности без полей бесполезны. Давайте добавим имя и фамилию нашему учителю.

field string --fieldName firstName
field string --fieldName name

Было бы круто иметь курсы прилагается.

entity --class ~.entity.Course --testAutomatically
field string --fieldName name
focus --class Teacher
field set --fieldName courses --type Course

Обратите внимание, что, поскольку Roo работает в контекстном режиме, я должен использовать команду focus, чтобы не создавать наборы курсов внутри класса Course, но внутри класса Teacher.

Плагин Vaadin

До сих пор в Ваадине ничего не было. Вот оно: следуя инструкциям из вики Vaadin , я загружаю последний снимок плагина Vaadin Roo и помещаю его в локальный репозиторий OSGI Roo. Чтобы новый пакет был увиден Roo, я должен перезапустить его, что я не знаю, как делать внутри STS. Вместо этого я перезагружаю STS.

Приходит волшебная команда:

vaadin setup --applicationPackage ~.web --useJpaContainer false

Эта команда:

  • добавляет зависимость от Ваадина
  • добавляет веб-каталог с изображениями
  • обновляет ПОМ для войны упаковки

Тем не менее, когда я пытаюсь добавить свой новый веб-проект в Tomcat, STS жалуется, что не находит подходящих проектов. Проблема заключается в том, что Eclipse не синхронизируется с Maven, и в моем проекте отсутствует веб-аспект. Решение: щелкните правой кнопкой мыши по моему проекту, перейдите в меню Maven и выберите подменю «Обновить конфигурацию проекта». По завершении я могу добавить проект в Tomcat, как и любой другой веб-проект (так как он в любом случае).

Запустив Tomcat и перейдя по адресу http: // localhost: 8080 / vaadin , я вижу, как Ваадин обрабатывает мой запрос. Я просто пропускаю взгляды на мои сущности, что делается с помощью следующего:

vaadin generate all --package ~.web.ui --visuallyComposable true

Вывод

Ну, это было быстро, если не идеально. Я скучаю по некоторым функциям в Roo:

Что касается плагина Vaadin, в нем отсутствует обновление файлов Eclipse после изменения POM. Кто-то, кто не знаком с внутренней работой m2eclipse, может потерять некоторое время с таким поведением.

С другой стороны, у меня есть простое веб-приложение за считанные минуты, которое я теперь могу обновить по своему выбору. CTRL + SPACE и подсказка — это функции Roo killer. Кроме того, как показано в дополнении Vaadin, вы можете добавить любую недостающую функциональность с помощью своего собственного плагина (или использовать уже имеющийся). Что действительно важно для меня, и без него я бы даже не подумал об использовании Roo в том, что его можно полностью удалить за 3 простых шага . Таким образом, вы можете использовать повышение производительности Roo, никому об этом не говорить и удалить Roo непосредственно перед передачей вашего проекта в службу поддержки.

Спасибо Joonas Lehtinen и Henri Sara за их работу над плагином Roo Vaadin и за то, что я заблаговременно отправил мне черновик вики, объясняющий роль Vaadin.

Вот источники для этой статьи в формате Maven / STS.

Чтобы идти дальше:

 

От http://blog.frankel.ch/playing-with-spring-roo-and-vaadin