Главная
Блог разработчиков phpBB
 
+ 17 предустановленных модов
+ SEO-оптимизация форума
+ авторизация через соц. сети
+ защита от спама

Spring Roo — что за зверь и с чем его едят?

Anna | 1.06.2014 | нет комментариев

Warning

Внимание, описаное ниже является суждением автора и не претендует на звание догмы.

Так что же такое Spring Roo?

Spring Roo, как пишут в той же википедии — framework, тот, что разрешает стремительно разработать бизнес приложение, вернее его структурную часть. По моему суждению, приложением то, что получается на выходе назвать трудно, но как инструмент прототипирования на исходной стадии разработки — крайне пригодная вещь. Вообще, говорить о чем-то техническом дозволено длинно, прекрасно и напридумать кучу аргументов как «за», так и «вопреки». Но Дабы решить для себя потребность спецтехнологии, стоит вначале испробовать ее, ну либо как минимум подумать о процессе использования ее в «быту», так сказать. Чем мы дальше и займемся.

С места в карьер

Качаем Spring Roo, распаковываем архив и запускаем консоль roo. Дальше начинается самое увлекательное. Стоит сразу сказать — у консоли roo есть восхитительная команда hint, она подскажет вам, что именно дозволено и необходимо делать на всяком определенном этапе разработки. Дальше по пунктам разглядим создание простейшего CRUD веб-приложения.

Создание плана
project --topLevelPackage com.getauft.library --java 7 --projectName library

Позже всякой команды, roo будет выводить результат из которого будет ясно, что именно случилось и случилось ли…
Пример результата на команду создания плана указанную выше:

Created ROOT/pom.xml
Created SRC_MAIN_RESOURCES
Created SRC_MAIN_RESOURCES/log4j.properties
Created SPRING_CONFIG_ROOT
Created SPRING_CONFIG_ROOT/applicationContext.xml
Механизм персистентности

Необычно, если наше приложение будет беречь данные в сессии только. Для того, Дабы трудиться с БД, нам необходимо применять механизмы персистентности. В данном примере мы будем применять базу которая разворачивается и хранит все данные в оперативной памяти — HYPERSONIC. Для тех кто захочет применять mysql либо что-то другое — не составит труда изменить конфигурацию.

jpa setup --provider HIBERNATE --database HYPERSONIC_IN_MEMORY

Так легко.

Класс

Наше приложение должно оперировать какими-то сущностями, напротив для чего оно еще необходимо?! Сущности создаются так же легко как и все что тут описано.

entity jpa --class com.getauft.library.Book --testAutomatically
entity jpa --class com.getauft.library.Genre --testAutomatically

Мы сделали два класса, и указали, что они будут тестироваться механически(об этом в самом конце).

Поля класса
field string --fieldName title --notNull --class ~.Book
field string --fieldName description
field string --fieldName caption  --notNull --class ~.Genre

Мы сделали три поля: title и description для класса Book, и caption для Genre. Когда вам нужно сделать несколько полей для одного класса, то всякий раз указывать класс нет необходимости, дозволено спускать данный параметр позже того, как сделали первое поле в этом классе.

Связи между объектами
field set --fieldName genres --type ~.Genre --class ~.Book --cardinality MANY_TO_MANY

Связь простая: Много книг может содержать много стилей. Стили ничего не знают о существовании книг.

Контроллеры
controller all --package ~.web

Данная команда сделает нам все нужные контроллеры Дабы осуществлять CRUD операции с нашими объектами.

Логирование и тесты
logging setup --level INFO --package ALL_SPRING
perform tests

Логирование ясно, но что за тесты?! Помните в самом начале мы применяли при создании классов ключ --testAutomatically? Так вот Spring Roo сам покроет примитивными тестами эти классы, и как раз последней командой они и будут исполнены.

Запуск получившегося

Для запуска получившегося приложения нам нужно исполнить следующую команду:

mvn tomcat:run

Выполнение этой команды подразумевает, что на вашей машине стоит maven. Позже запуска, maven сам подтянет все нужные зависимости, не пугайтесь — их много. Дальше нам легко необходимо будет перейти по ссылке http://localhost:8080/library/ и о Диво, примерно полновесное приложение! Отчего примерно? Все легко — никакого функционала помимо операций CRUD тут вы не увидите… Пока не увидите. В идеале с поддержкой Spring Roo дозволено сделать кучу пригодных пророческой, таких как поиск и другое. Но в этой ознакомительной статье мы касаться этого не будем. Если будет увлекательно уважаемому прогросообществу, то я напишу продолжение, с больше серьезным примером и расширенным функционалом.

А сейчас для ленивых…

Те кто читают по диагонали и не хотят разбираться, а желают видеть сразу итог, то им необходимо скопировать код в файл с наименованием log.roo (наименование на самом деле не значимо), запустить консоль roo и исполнить команду script --file log.roo, а после этого в обыкновенной консоли mvn tomcat:run

Содержимое log.roo
project --topLevelPackage com.getauft.library --java 7 --projectName library
jpa setup --provider HIBERNATE --database HYPERSONIC_IN_MEMORY
entity jpa --class com.getauft.library.Book --testAutomatically
entity jpa --class com.getauft.library.Genre --testAutomatically 
field string --fieldName title --notNull --class ~.Book
field string --fieldName description --class ~.Book
field string --fieldName caption --class ~.Genre
field set --fieldName genres --type ~.Genre --class ~.Book --cardinality MANY_TO_MANY 
controller all --package ~.web
logging setup --level INFO --package ALL_SPRING
perform tests

Так для чего же он необходим?

Дозволено говорить много о том, что код сгенерированный машиной никогда не приблизится к коду написанному человеком (даже не знаю, неизменно ли это нехорошо). Дозволено говорить о том, что это применимо только в грозном и консервативном enterprise, где есть требования к функционалу продукта, а не удобству и дизайну. Много дозволено придумать «за» и «вопреки». Но одно верно — скорость создания модели приложения сокращается в разы. Да и кто сказал, что непременно применять Spring Roo для создания Web MVC?

Если у кого-то есть навык создания полновесных приложений с поддержкой Spring Roo, поделитесь своими ощущениями о сем в комментариях. Будет увлекательно суждение других разработчиков теснее имеющих навык.

 Источник: programmingmaster.ru
Оставить комментарий
Форум phpBB, русская поддержка форума phpBB
Рейтинг@Mail.ru 2008 - 2017 © BB3x.ru - русская поддержка форума phpBB