Короткий посібник з Spring Roo

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 baeldung cd baeldung 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 перейдемо до Встановлення нового програмного забезпечення та імпортування закладок на Доступні сайти програмного забезпечення . На даний момент закладки знаходяться в папці% ROO_HOME% \ conf . Після імпорту закладок ми можемо шукати просто roo та встановлювати останню версію Spring IDE Roo Support . Врешті-решт, нас попросять перезапустити STS.

Для детальних та сучасних кроків ми завжди можемо перевірити документацію Spring Roo Getting Started.

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

Тепер ми можемо ще раз перейти до меню програми «Вікно» та вибрати Show View> Roo Shell.

3. Перший проект

3.1. Налаштування проекту в СТС

У STS відкриємо вікно оболонки Roo і натисніть на значок Створити новий проект Roo . Це відкриє вікно проекту New Roo .

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

У STS для нас буде виконана наступна команда:

project setup --topLevelPackage com.baeldung --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 та оновити аспект.plugin.version з 1.8 на 1.9 :

1.9

На цьому етапі в проекті не повинно бути помилок, і для нас буде кілька автоматично згенерованих файлів.

3.2. Ру Шелл

Тепер настав час ознайомитися з оболонкою Roo. Основним користувальницьким інтерфейсом Spring Roo насправді є командний рядок!

Тому, повернімось до вікна Roo Shell. У ньому запустімо першу команду, набравши 'h' і натиснувши CTRL + ПРОБІЛ:

roo> h help hint

Roo буде автоматично пропонувати та виконувати команди для нас. Ми можемо набрати "привіт", натиснути CTRL + ПРОБІЛ, і Roo автоматично запропонує команду підказки .

Ще однією чудовою особливістю 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}]

На цьому етапі нам потрібно буде виконати деякі команди. Між кожним з них ми завжди можемо запустити команду hint, щоб побачити, що пропонує Роо. Це дуже корисна функція.

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

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

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

First, we created a new JPA persistent entity in the src/main/java folder. Next, we created three String fields in Book class, gave them a name and set to be not null.

After that, we have generated Spring Data repository for the specified entity and created a new service interface.

In the end, we included Spring MVC configuration, installed Thymeleaf and created a new controller that manages our entity. Because we have passed Thymeleaf as the response type, the generated methods and views will reflect this.

3.3. Running the Application

Let's refresh the project and right click on roo project and select Run As > Spring Boot App.

Once the application has started, we can open a web browser and go to //localhost:8080. Next, to Roo icon, we will see Book menu and underneath two options: Create Book and List Books. We can use this to add a book to our application and view the list of added books.

3.4. Other Features

When we open Book.java class file, we'll notice that the class is annotated with @Roo annotations. These were added by Roo Shell and are used to control and customize the content of AspectJ inter-type declaration (ITD) files. We can view the files in Package Explorer in STS by unselecting “Hide generated Spring Roo ITDs” filter in View Menu, or we can open the files directly from the file system.

Roo annotations have SOURCE retention policy. This means the annotations won't be present in compiled class bytecode, and there won't be any dependency to Roo in deployed applications.

Another, obviously missing part in the Book.java class are getters and setters. These are stored in separate AspectJ ITDs files, as already mentioned. Roo will actively maintain this boilerplate code for us. Therefore, changes to fields in any class will be automatically reflected in AspectJ ITDs as Roo is “monitoring” all changes – either done via Roo Shell or directly by a developer in IDE.

Roo will take care of the repetitive code like toString() or equals() methods too.

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

4. Висновок

У цьому короткому прикладі нам вдалося встановити та налаштувати Spring Roo у STS та створити невеликий проект.

Для його налаштування ми використовували Roo Shell, і нам не потрібно було писати жодного рядка власне коду Java! І ми змогли отримати працюючий прототип програми за кілька хвилин, і Роо подбав про весь шаблонний код для нас.

Як завжди, код, який використовується під час обговорення, можна знайти на GitHub.