Перейти к основному содержимому

Краткое руководство по Spring Roo

· 7 мин. чтения

1. Обзор

Spring Roo — это инструмент для быстрой разработки приложений (RAD), целью которого является предоставление быстрых и мгновенных результатов, ориентированных на веб-приложения Spring и новые технологии Spring. Это позволяет нам генерировать шаблонный код и структуру проекта для приложений Spring с помощью простых в использовании команд.

Roo можно использовать как отдельное приложение, работающее из командной строки операционной системы. Нет необходимости использовать Eclipse, Spring Tool Suite (STS) или любую другую IDE; на самом деле, мы можем использовать любой текстовый редактор для написания кода!

Однако для простоты мы будем использовать STS IDE с расширением Roo.

2. Установка Spring Roo

2.1. Требования

Чтобы следовать этому руководству, они должны быть установлены:

  1. Java JDK 8
  2. СТС
  3. Спринг Ру

2.2. Монтаж

После загрузки и установки Java JDK и STS нам нужно разархивировать Spring Roo и добавить его в системный путь.

Давайте создадим переменную окружения ROO_HOME и добавим в путь %ROO_HOME%\bin .

Чтобы убедиться, что Roo установлен правильно, мы можем открыть командную строку и выполнить следующие команды:

mkdir foreach
cd foreach
roo quit

Через несколько секунд мы увидим:

_
___ _ __ _ __(_)_ __ __ _ _ __ ___ ___
/ __| '_ \| '__| | '_ \ / _` | | '__/ _ \ / _ \
\__ \ |_) | | | | | | | (_| | | | | (_) | (_) |
|___/ .__/|_| |_|_| |_|\__, | |_| \___/ \___/
|_| |___/ 2.0.0.RC1

Welcome to Spring Roo. For assistance press TAB or type "hint" then hit ENTER.

Ру установлен, работает. Обратите внимание, что версия Spring Roo может различаться, а шаги и инструкции могут зависеть от фактической используемой версии.

Важно: Spring Roo 2.0 не имеет обратной совместимости с 1.x.

2.3. Добавление и настройка расширения STS

По умолчанию STS поддерживает разработку приложений Spring и включает готовые к использованию расширения. Однако расширение Spring Roo не включено. Поэтому нам нужно будет добавить его вручную.

В STS давайте перейдем к установке нового программного обеспечения и импортируем закладки на доступные сайты программного обеспечения . В настоящее время закладки находятся в папке %ROO_HOME%\conf . После того, как мы импортировали закладки, мы можем найти просто roo и установить последнюю версию Spring IDE Roo Support . В конце нас попросят перезапустить STS.

Для получения подробных и актуальных шагов мы всегда можем обратиться к документации Spring Roo Getting Started .

После того, как мы установили поддержку Roo в STS, нам нужно настроить расширение. Это так же просто, как указать Roo Support в папку %ROO_HOME% . Опять же, Spring Roo Getting Started дает подробные шаги, как это сделать.

Теперь мы можем снова зайти в меню приложения «Window» и выбрать Show View > Roo Shell.

3. Первый проект

3.1. Настройка проекта в STS

В STS давайте откроем окно Roo Shell и щелкнем значок «Создать новый проект Roo» . Откроется окно New Roo Project .

Мы назовем проект roo и будем использовать com.foreach в качестве имени пакета верхнего уровня. Мы можем оставить все остальные значения по умолчанию и перейти к созданию нового проекта с помощью Roo.

В STS это запустит для нас следующую команду:

project setup --topLevelPackage com.foreach --projectName "roo" --java 8 --packaging JAR

Как уже упоминалось, нам не нужна IDE, и мы могли бы сами запустить эту команду из Roo Shell! Для простоты мы используем встроенные функции STS.

Если мы получим следующую ошибку:

Could not calculate build plan: Plugin org.codehaus.mojo:aspectj-maven-plugin:1.8 
or one of its dependencies could not be resolved:
Failed to read artifact descriptor for org.codehaus.mojo:aspectj-maven-plugin:jar:1.8

Самый простой способ исправить это — вручную отредактировать файл pom.xml и обновить aspectj.plugin.version с 1.8 до 1.9 :

<aspectj.plugin.version>1.9</aspectj.plugin.version>

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

3.2. Ру Шелл

Теперь пришло время ознакомиться с Roo Shell. Фактически, основной пользовательский интерфейс Spring Roo — это командная строка!

Поэтому вернемся к окну Roo Shell. В нем запустим первую команду, набрав «h» и нажав CTRL+ПРОБЕЛ:

roo> h

help hint

Roo будет автоматически предлагать и автозаполнять команды для нас. Мы можем ввести «привет», нажать CTRL+ПРОБЕЛ, и Ру автоматически предложит команду подсказки .

Еще одна замечательная особенность Roo Shell — контекстная осведомленность . Например, вывод команды подсказки будет меняться в зависимости от предыдущего ввода.

Давайте теперь выполним команду hint и посмотрим, что произойдет:

roo> hint 
Roo requires the installation of a persistence configuration.

Type 'jpa setup' and then hit CTRL+SPACE. We suggest you type 'H'
then CTRL+SPACE to complete "HIBERNATE".

After the --provider, press CTRL+SPACE for database choices.
For testing purposes, type (or CTRL+SPACE) HYPERSONIC_IN_MEMORY.
If you press CTRL+SPACE again, you'll see there are no more options.
As such, you're ready to press ENTER to execute the command.

Once JPA is installed, type 'hint' and ENTER for the next suggestion.

Это дает нам следующие шаги, которые мы должны выполнить. Теперь добавим базу данных:

roo> jpa setup --provider HIBERNATE --database HYPERSONIC_IN_MEMORY 
Created SRC_MAIN_RESOURCES\application.properties
Updated SRC_MAIN_RESOURCES\application.properties
Updated SRC_MAIN_RESOURCES\application-dev.properties
Updated ROOT\pom.xml [added dependencies org.springframework.boot:spring-boot-starter-data-jpa:, org.springframework.boot:spring-boot-starter-jdbc:, org.hsqldb:hsqldb:; added property 'springlets.version' = '1.2.0.RC1'; added dependencies io.springlets:springlets-data-jpa:${springlets.version}, io.springlets:springlets-data-jpa:${springlets.version}; added dependencies io.springlets:springlets-data-commons:${springlets.version}, io.springlets:springlets-data-commons:${springlets.version}]

На этом этапе нам нужно будет выполнить некоторые команды. Между каждым из них мы всегда можем запустить команду подсказки , чтобы увидеть, что предлагает Ру. Это очень полезная функция.

Давайте сначала запустим команды , а потом пройдемся по ним:

roo> 
entity jpa --class ~.domain.Book
field string --fieldName title --notNull
field string --fieldName author --notNull
field string --fieldName isbn --notNull
repository jpa --entity ~.domain.Book
service --all
web mvc setup
web mvc view setup --type THYMELEAF
web mvc controller --entity ~.domain.Book --responseType THYMELEAF

Теперь мы готовы запустить наше приложение. Однако давайте вернемся к командам, чтобы посмотреть, что мы сделали.

Во-первых, мы создали новый постоянный объект JPA в папке src/main/java . Затем мы создали три поля String в классе Book , дали им имя и установили значение not null .

После этого мы сгенерировали репозиторий Spring Data для указанной сущности и создали новый сервисный интерфейс.

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

3.3. Запуск приложения

Давайте обновим проект, щелкните правой кнопкой мыши проект roo и выберите Run As > Spring Boot App .

После запуска приложения мы можем открыть веб-браузер и перейти по адресу http://localhost:8080 . Рядом со значком Roo мы увидим меню « Книга» и под ним две опции: «Создать книгу» и «Список книг» . Мы можем использовать это, чтобы добавить книгу в наше приложение и просмотреть список добавленных книг.

3.4. Другие особенности

Когда мы откроем файл класса Book.java , мы заметим, что класс снабжен аннотациями @Roo . Они были добавлены Roo Shell и используются для управления и настройки содержимого файлов межтиповой декларации (ITD) AspectJ. Мы можем просмотреть файлы в проводнике пакетов в STS, сняв флажок «Скрыть сгенерированные Spring Roo ITD» в меню «Просмотр», или мы можем открыть файлы непосредственно из файловой системы.

Аннотации Roo имеют политику хранения SOURCE . Это означает , что аннотации не будут присутствовать в байт-коде скомпилированного класса , и не будет никакой зависимости от Roo в развернутых приложениях.

Еще одна явно отсутствующая часть класса Book.java — геттеры и сеттеры . Как уже упоминалось, они хранятся в отдельных файлах AspectJ ITD. Roo будет активно поддерживать этот шаблонный код для нас. Таким образом, изменения полей в любом классе будут автоматически отражаться в ITD AspectJ, поскольку Roo «отслеживает» все изменения — либо через Roo Shell, либо непосредственно разработчиком в IDE.

Roo также позаботится о повторяющемся коде, таком как методы toString() или equals() .

Более того, фреймворк можно легко удалить из проекта, избегая привязки к поставщику, путем удаления аннотаций и добавления AspectJ ITD в стандартный код Java.

4. Вывод

В этом быстром примере нам удалось установить и настроить Spring Roo в STS и создать небольшой проект.

Мы использовали Roo Shell для его настройки, и нам не нужно было писать ни единой строки реального Java-кода! И мы смогли получить работающий прототип приложения за несколько минут, а Roo позаботился обо всем шаблонном коде для нас.

Как всегда, код, использованный в ходе обсуждения, можно найти на GitHub .