Опытный взгляд Java программиста на Spring Roo

Прежде чем рассказать о технологии Spring Roo, хочу сделать не большое отступление по поводу того, зачем вообще все это нужно.
В одно время мне пришлось работать ведущим Java программистом в Web 2.0 проекте. Проект был полностью ориентирован под Spring.
Архитектура выглядела примерно так:
- самый нижний уровень — hibernate
- чуть по выше — java domain objects
- потом DAO
- сервисы
- ну и наконец controllers + view
По большойму счету такая архитектура у подовляющего большинства Spring решений.
Время, затраченое командой из трех программистов на то, что бы поднять базовый скелет системы и стабилизировать его, было равно 2.5 месяцам.
После того, как я познакомился со Spring Roo, я самостоятельно поднял такой проект на этой технологии за 3 недели.
Дня три — знакомство и изучение Spring Roo.
Остальные 2.5 недели — создание и кустомизация скелета.
Теперь разберемся более детально с данной технологи.
Как пишут на официальном сайте Spring Roo — это легковесный инструмент разработки, что делает его быстрым и простым для достижения мгновенных результатов.
Итак, идем на сайт Spring Roo, скачиваем релиз www.springsource.com/products/spring-community-download, разархивируем.
Установка Roo тривиальна, добавляем путь к папке bin в classpath.
Например, если у вас ОС MS Windows то, для текущего релиза, spring-roo-1.1.0, добавьте путь ..\spring-roo-1.1.0.RELEASE\bin в переменную окружения path.
Так же, для компиляции примеров, необходимо установить Java SDK 6 и Apache Maven.
Итак, заходим в папку samples, там лежат несколько примеров конфигурационных файлов для проектов Spring Roo. Для примера возьмем проекта clinic (конфиг clinic.roo).
Для создания и деплоя проекта проделайте следующие действия:
- создайте папку clinic и перейдите в неё
- запустите оболочку roo (команда roo)
- выполните в оболочке roo команду: script --file ../clinic.roo
- запускаем компиляцию и деплой maven’ом: mvn clean install tomcat:run
Если все скомпилилось и задеплоилось без ошибок идем на localhost:8080/clinic и видим рабочее решение на технологии Spring Roo.
Если бы мы писали подобный проект руками, то потратили бы на это, вместе с тестированием, недели полторы, две. Разобраться с Roo и написать конфигурационный файл проекта, по моим оценкам не заняло бы и 5 дней, вместе с автоматическими uni-test’ами и UI тестами для selenium.
Spring Roo по сути оболочка для быстрого создания Spring решений, на основе архитектуры, о которой я писал выше. Если же вы обнаружите, недостатки решений на основе Roo то, можно написать свой плугин. В этом смысле, данная технология, очень гибкая и может кустомизироваться практически под любой Spring проект.
К достоинствам я бы еще отнес, то, что из Roo мы можем брать только отдельные части решения, например domain уровень, а controllers и view написать самостоятельно.
Основные недостатки на мой взгляд следующие:
- по умолчанию технология для отображения (view) JSP, было бы лучше сделать Freemarker
- добавить возможность отключения аспектного подхода
- добавить возможность создания jar проектов (сейчас доступны только war)
- мало документации
Подведу итог: Spring Roo очень мощное решение для быстрого создания Java проектов на платформе Spring. К сожалению, на сегодняшний день Roo поддерживает не так много возможностей как хотелось бы, но умелое использование отдельных модулей, может дать ускорение начальной стадии разработки проекта, в десятки раз.