Кратко ръководство за Spring Roo

1. Общ преглед

Spring Roo е инструмент за бързо разработване на приложения (RAD), който има за цел да осигури бързи и незабавни резултати, фокусирани върху Spring web приложения и по-нови Spring технологии. Позволява ни да генерираме шаблонния код и структурата на проекти за Spring приложения с лесни за използване команди.

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

За простота обаче ще използваме STS IDE с Roo Extension.

2. Инсталиране на Spring Roo

2.1. Изисквания

За да следвате този урок, те трябва да бъдат инсталирани:

  1. Java JDK 8
  2. STS
  3. Spring Roo

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 дава подробни стъпки как да го направите.

Сега можем да отидем още веднъж в менюто на приложението „Window“ и да изберете Show View> Roo Shell.

3. Първи проект

3.1. Създаване на проект в STS

В STS нека отворим прозореца Roo Shell и щракнем върху иконата Create New Roo Project . Това ще отвори прозорец на New Roo Project .

Ще името на проекта Ру и ползване 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 и да актуализирате аспект j.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 + SPACE и Roo ще предложи автоматично команда за подсказване .

Друга чудесна характеристика на Roo Shell е осъзнаването на контекста . Например изходът на командата 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. Това е много полезна функция.

Нека първо изпълним командите и след това ще преминем през тях:

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 код! И успяхме да получим работещ прототип на приложението за няколко минути и Roo се погрижи за целия код на шаблона вместо нас.

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