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

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

1. обзор

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

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

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

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

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

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

2.2. Монтаж

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

Давайте создадим переменную средыROO_HOME и добавим%ROO_HOME%in к пути.

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

mkdir example
cd example
roo quit

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

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

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

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

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

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

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

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

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

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

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

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

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

В STS откройте окноRoo Shell и щелкните значокCreate New Roo Project. Это откроет окноNew Roo Project.

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

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

project setup --topLevelPackage com.example --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:

1.9

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

3.2. Roo Shell

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

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

roo> h

help    hint

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

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

Давайте теперь выполним команду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}]

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

Let’s run the commands first, и мы рассмотрим их позже:

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, дали им имя и установили неnull.

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

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

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

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

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

3.4. Другие преимущества

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

Аннотации Roo имеют политику храненияSOURCE. Это означаетthe annotations won’t be present in compiled class bytecode, и в развернутых приложениях не будет никакой зависимости от Roo.

Другая, явно отсутствующая часть в классеBook.java - этоgetters иsetters. Они хранятся в отдельных файлах AspectJ ITD, как уже упоминалось. Ру будет активно поддерживать этот стандартный код для нас. Поэтому изменения полей в любом классе будут автоматически отражаться в ITD AspectJ, поскольку Roo «отслеживает» все изменения - либо через Roo Shell, либо непосредственно разработчиком в IDE.

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

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

4. Заключение

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

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

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