Год назад под нежным давлением коллеги я попробовал 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:
- выбор DAO вместо ActiveRecord, хотя Roo не имеет той же точки зрения
- многоразовый сервисный слой, который возможен с ручным усилием
- выбор моего каркаса
Что касается плагина Vaadin, в нем отсутствует обновление файлов Eclipse после изменения POM. Кто-то, кто не знаком с внутренней работой m2eclipse, может потерять некоторое время с таким поведением.
С другой стороны, у меня есть простое веб-приложение за считанные минуты, которое я теперь могу обновить по своему выбору. CTRL + SPACE и подсказка — это функции Roo killer. Кроме того, как показано в дополнении Vaadin, вы можете добавить любую недостающую функциональность с помощью своего собственного плагина (или использовать уже имеющийся). Что действительно важно для меня, и без него я бы даже не подумал об использовании Roo в том, что его можно полностью удалить за 3 простых шага . Таким образом, вы можете использовать повышение производительности Roo, никому об этом не говорить и удалить Roo непосредственно перед передачей вашего проекта в службу поддержки.
Спасибо Joonas Lehtinen и Henri Sara за их работу над плагином Roo Vaadin и за то, что я заблаговременно отправил мне черновик вики, объясняющий роль Vaadin.
Вот источники для этой статьи в формате Maven / STS.
Чтобы идти дальше:
- Документация Ру
- Vaadin Roo плагин с практическими рекомендациями
От http://blog.frankel.ch/playing-with-spring-roo-and-vaadin