Цей урок висвітлює покрокове створення Spring Boot додатки з використанням Grails Object Relational Mapper (GORM) і Hibernate.
Що ви створите
Ви створите Spring додаток, яке зберігає дані в БД в пам'яті з використанням GORM.
У цьому уроці використовується тільки бібліотека Grails GORM. Ви не зобов'язані використовувати весь web-стек Grails.
Що вам буде потрібно
Як проходити цей урок
Як і більшість уроків по Spring, ви можете почати з нуля і виконувати кожен крок, або пропустити базові кроки, які вам вже знайомі. У будь-якому випадку, ви в кінцевому підсумку отримаєте робочий код.
Коли ви закінчите. можете порівняти отриманий результат зі зразком в gs-accessing-data-gorm / complete.
Налаштування проекту
Для початку вам необхідно налаштувати базовий скрипт збірки. Ви можете використовувати будь-яку систему збирання, яка вам подобається для збірки проет Spring, але в цьому уроці розглянемо код для роботи з Gradle. Якщо ви не знайомі з нею, ознайомтеся з відповідним уроком Збірка Java-проекту з використанням Gradle.
Створення структури каталогів
В обраному вами каталозі проекту створіть наступну структуру каталогів; наприклад, командою mkdir -p src / main / groovy / hello для * nix систем:
Створення файлу збірки Gradle
Нижче представлений початковий файл збірки Gradle. Якщо ви використовуєте Spring Tool Suite (STS). то можете імпортувати урок прямо з нього.
Якщо ви подивіться на pom.xml. ви знайдете, що вказана версія для maven-compiler-plugin. Загалом, це не рекомендується робити. В даному випадку він призначений для вирішення проблем з нашої CI системи, яка за замовчуванням має стару (до Java 5) версію цього плагіна.
Spring Boot gradle plugin надає безліч зручних можливостей:
- Він збирає все jar'и в classpath і збирає єдине, що виконується "über-jar", що робить більш зручним виконання і доставку вашого сервісу
- Він шукає public static void main () метод, як ознака виконуваного класу
- Він надає вбудоване дозвіл залежностей, з певними номерами версій для відповідних Spring Boot залежностей. Ви можете перевизначити на будь-які версії, які захочете, але він буде за замовчуванням для Boot обраним набором версій
Створення GORM суті
У цьому прикладі ми моделюємо просту сутність Person з використанням GORM:
Блок обмеження описує будь-які правила валідації. В даному випадку, накладається обмеження тільки на використання непустих полів.
Створення контролера ресурсів
Створіть контролер для вашого Groovy Spring програми:
Приклад описує дві REST точки виходу:
- addPerson дозволяє додавати нову людину
- greet вітає людини по його імені
Далі ви побачите питання запуску програми і створити нову сутність Person.
Створення програми виконуваним
Незважаючи на те, що пакет цього сервісу може бути в складі web-додатки і WAR файлів, більш простий підхід, продемонстрований нижче створює окреме самостійне додаток. Ви упаковуєте все в єдиний, виконуваний JAR-файл, який запускається через добре знайомий старий main () Java-метод. Попутно, ви використовуєте підтримку Spring для вбудованого Tomcat контейнера сервлетів як HTTP середу виконання замість розгортання на сторонній екземпляр.
main () метод передає управління допоміжному класу SpringApplication. де Application.class - аргумент його run () методу. Це повідомляє Spring про читання метаданих анотації з Application і управлінні нею як компонента в Spring application context.
Анотація @ComponentScan говорить Spring'у рекурсивно шукати в пакеті hello і його нащадків класи, помічені прямо або побічно Spring анотацією @Component. Ця директива гарантує, що Spring знайде і зареєструє GreetingController. тому що він відзначений @Controller. який, в свою чергу, є свого роду @Component анотацією.
Анотація @EnableAutoConfiguration перемикає на прийнятне за замовчуванням поведінка, заснована на утриманні вашого classpath. Наприклад, тому що додаток залежить від забудованої версії Tomcat (tomcat-embed-core.jar), Tomcat сервер встановлений і налаштований на прийнятне за замовчуванням поведінку від вашого імені. І тому додаток також залежить від Spring MVC (spring-webmvc.jar), Spring MVC DispatcherServlet налаштований і зареєстрований для вас - web.xml не потрібен! Автом корисний і гнучкий механізм. Детальну інформацію дивіться в API документації.
Збірка виконуваного JAR
Ви можете зібрати єдиний виконуваний JAR-файл, який містить всі необхідні залежності, класи і ресурси. Це робить його легким в завантаженні, версіонірованія і розгортання сервісу як додатки протягом усього періоду розробки, на різних середовищах і так далі.
Потім ви можете запустити JAR-файл:
Якщо ви використовуєте Maven, ви можете запустити додаток, використовуючи mvn spring-boot: run. або ви можете зібрати додаток з mvn clean package і запустити JAR приблизно так:
Процедура, описана вище, створює виконуваний JAR. Ви також можете замість нього зібрати класичний WAR-файл.
запуск програми
Якщо ви використовуєте Gradle, ви можете запустити ваш сервіс з командного рядка:
Якщо ви використовуєте Maven, то можете запустити ваш сервіс таким чином: mvn clean package java -jar target / gs-accessing-data-gorm-0.1.0.jar.
Як варіант, ви можете запустити ваш сервіс безпосередньо з Gradle приблизно так:
З mvn - mvn spring-boot: run.
тестування додатка
Коли додаток запуститься, ви можете створити нову людину, відправивши POST запит. Наприклад, використовуючи * nix інструмент curl.
Результат відповіді, показаному нижче, вказує на те, що ресурс був створений:
Потім ви можете відправити GET запит на / greet для отримання привітання:
Підтримка Groovy Script
Попередній приклад вимагав від вас установки системи збирання Gradle або Maven, але ви можете також використовувати GORM в простому Groovy скрипті.
Як приклад, створіть новий файл app.groovy і помістіть в нього наступний код:
Не має значення, де розташований файл.
Запустіть його як показано нижче:
Передбачається, що ви завершили попереднє додаток, щоб уникнути колізії портів.
Налаштування DataSource
javax.sql.DataSource. використовуваний для створення з'єднань, може бути налаштований відповідно до інструкції керівництва користувача Spring Boot.
Вітаємо! Ви тільки що створили Spring додаток з використанням GORM для доступу до даних.
З оригінальним текстом уроку ви можете ознайомитися на spring.io.