HtmlSites: Создаём проект Spring Roo

Мне тут потребовалось изучить Spring Roo. Документацию я пролистал, теперь нужно сделать какой-нибудь проект с использованием этой технологии. Программирование без практики не имеет смысла, не так ли? Выбор пал на простенький хостинг HTML-страниц. Сейчас я на листочке накидал  примерный вид экранных форм.

Функционал будет следующий:

  • Загрузка файлов (html, htm, zip, jpg, jpeg, png, gif, svg) до 100 КБ.
  • Переименование файлов
  • Удаление файлов
  • Создание каталогов
  • Переименование каталогов
  • Удаление каталогов
  • Загрузка ZIP-архива с файлами
  • Несколько сайтов на одного пользователя
  • Блокирока/разблокировка сайтов администратором

Сейчас уже с помощью Roo слепил основную структуру проекта и слой сущностей.

Опишу, на всякий случай, как это делается.

Сначала нам нужно в Spring Tool Suite или Eclipse, что там у вас, в Dashboard кликнуть на IDE EXTENSIONS. Там нужно установить расширения Spring Roo (current production release) и Spring IDE — Roo Extension.

После этого при создании нового проекта можно будет выбрать “Spring Roo Project”.

Все основные действия со Spring Roo производятся с консоли Roo. При создании проекта Spring Roo она должна открыться автоматически. Если этого не произошло, то её можно открыть с помощью «Главное меню» -> “Window” -> “Show View” -> “Roo Shell”.

В консоли Roo всегда можно написать команду hint, чтобы увидеть подсказку. Также можно нажимать клавишу табуляции, чтобы увидеть возможные завершения текущей набираемой команды.

Создание нового проекта Spring Roo выполняет команду:

Где вместо ru.urvanov.htmlsites  будет ваш пакет верхнего уровня. Вам НЕ нужно выполнять эту команду, Spring Tool Suite выполяет её автоматически при создании нового проекта Spring Roo Project из меню.

Дальше нам нужно настроить Hibernate и базу данных. Это делается командой:

Здесь была выбрана база данных MySQL. Roo поддерживает и другие базы данных. Полный список можно увидеть в документации на официальном сайте. Эта команда подключит необходимые артефакты для Hibernate и MySQL и настроит их. Настройки доступа к базе данных нужно будет прописать в src/main/resources/META-INF/spring/database.properties.

После настройки Hibernate мы можем создавать классы предметной области (сущности модели домена) с помощью команды:

Здесь символ «~» обозначает корневой пакет нашего проекта, а ~.domain.UserEntity  означает, что нужно создать класс UserEntity  в подпакете domain  корневого пакета нашего проекта. Класс будет отображением таблицы users. Параметр --testAutomatically  генерирует автоматические тесты для нашего класса.

Теперь мы можем добавлять поля командами:

Здесь мы создаём три поля: username, password, enabled. Каждое из полей не принимает значения NULL. Для username  и password  указана максимальная и минимальная длина, а для enabled  указано значение по умолчанию true. Обратите внимание, что вы в любой момент можете нажать табулятор, и Roo отобразит возможные варианты завершения команды.

Аналогичным образом создаём остальные сущности. Например, сущность для хранения сайта пользователя:

Чтобы указать, что эта сущность ссылается на сущность UserEntity, нужно использовать тип reference:

Здесь мы добавили поле userEntity, которое имеет тип UserEntity. Это поле связывается с сущностью UserEntity  через поле user_id  в базе данных.

Аналогичным образом создаются остальные сущности.

После создания сущностей можно настроить Spring MVC:

Можно даже сгенерировать простенький интерфейс, чтобы убедиться, что наши сущности работают:

И настроить Spring Security:

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

Я, правда, при создании слегка перепутал. Чтобы долго не возиться с исправлениями придётся создать заново, скорее всего.


Поделиться:
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Добавить комментарий

Ваш e-mail не будет опубликован.

*