Якщо ти лише берешся до роботи зі Spring Boot або "Spring" загалом, почни з ознайомлення з цим розділом. Він дасть відповіді на основні питання "що?", "як?" і навіщо?". Розділ містить вступ до Spring Boot разом з інструкціями з установки. Потім ми проведемо тебе через створення першої програми в Spring Boot, описуючи по ходу деякі основні принципи.
Вступ до Spring Boot
Spring Boot допомагає створювати автономні програми на базі Spring, які можна потім виконувати. Ми дотримуємося суб'єктивного погляду на платформу Spring та сторонні бібліотеки, щоб ти міг розпочати роботу, доклавши мінімум зусиль. Більшість програм на Spring Boot не потребують детального конфігурування Spring.
Ти можеш використовувати Spring Boot для створення Java-додатків, які можуть бути
запущені за допомогою команди java-jar
або більш традиційних методів розгортань через war-файли Ми
також надаємо інструментальний засіб командного рядка, який запускає "скрипти Spring".
Нашими основними цілями є:
Забезпечити радикально швидший та широко доступний досвід початкової роботи для будь-яких розробок на Spring.
Пропонувати власну думку з самого початку, але поступатися, якщо вимоги починають розходитися зі стандартними.
Надавати ряд нефункціональних можливостей, які є спільними для великих класів проектів (таких як вбудовані сервери, безпека, метрики, перевірка працездатності та винесена у зовнішній файл конфігурація).
Абсолютна відсутність генерації коду та вимог до XML-конфігурації.
Розробка вашої першої програми засобами Spring Boot
У цьому розділі описується розробка невеликого веб-додатку "Hello World! ", який демонструє деякі ключові можливості Spring Boot. Для складання цього проекту ми використовуємо Maven, оскільки більшість IDE підтримують його.
Вебсайт spring.io містить безліч гайдів про "початок роботи", у яких використовується Spring Boot. Якщо тобі потрібно вирішити конкретну проблему, спочатку заглянь туди.
Ти можеш пропустити наведені нижче кроки, перейшовши за адресою start .spring.io і вибравши стартовий пакет для веб з пошуковика залежностей. При цьому буде створено нову структуру проєкту, щоб можна було відразу ж приступати до написання коду. Перш ніж ми приступимо, відкрий термінал і виконай наступні команди, щоб переконатися, що у тебе встановлені дійсні версії Java і Maven:
$ java -version
java version "1.8.0_102"
Java(TM) SE Runtime Environment (build 1.8.0_102-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode)
$ mvn -v
Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-17T14:33:14-04:00)
Maven home: /usr/local/Cellar/maven/3.3.9/libexec
Java version: 1.8.0_102, vendor: Oracle Corporation
Создание POM
Почати необхідно зі створення файла pom.xml для Maven. pom.xml
— це набір правил, які
використовуються для складання проєкту. Відкрий свій улюблений
текстовий редактор і додай наступне:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>myproject</artifactId>
<version>0.0.1-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.5</version>
</parent>
<!-- Додаткові рядки будуть додані тут... -->
</project>
Попередній листинг повинен дозволити вам отримати робочий білд. Ви можете перевірити його, запустивши mvn
package
(поки що можна ігнорувати попередження "jar буде порожнім – відсутній вміст, позначений для
включення!").
Додавання залежностей з classpath
Spring Boot
передбачає низку "стартових пакетів", які дозволяють додавати jar-файли в classpath. Наші програми для
димових (на загальну працездатність) тестів (smoke tests) використовують spring-boot-starter-parent
у parent
секції POM-моделі. spring-boot-starter-parent
— це спеціальний
стартовий пакет, який передбачає параметри Maven, що використовуються за замовчуванням. Він також
передбачає секцію управління залежностями
, щоб можна було опускати теги
version
для "вибраних" залежностей.
Інші "стартові пакети" передбачають залежності, які, швидше за все, знадобляться розробки додатків
певного типу. Оскільки ми розробляємо вебдодаток, то додаємо залежність від spring-boot-starter-web
.
Перед цим можна подивитися, що у нас є наразі, виконавши наступну команду:
$ mvn dependency:tree
[INFO] com.example:myproject:jar:0.0.1-SNAPSHOT
Команда mvn dependency:tree
виводить деревоподібне уявлення залежностей проєкту. Як
можна помітити, spring-boot-starter-parent
сам по собі не передбачає жодних залежностей.
Щоб додати необхідні залежності, відредагуйте свій pom.xml
і додайте залежність spring-boot-starter-web
відразу під parent
секцією:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
Якщо ти знову запустиш mvn dependency:tree
, то побачиш, що тепер існує кілька
додаткових залежностей, включно з вебсервером Tomcat і самим Spring Boot.
Написання коду
Щоб завершити програму, нам необхідно створити один Java-файл. За замовчуванням Maven компілює
вихідники з каталогу src/main/java
, тому необхідно створити цю структуру каталогу, а
потім додати файл з ім'ям src/main/java/MyApplication.java
, який міститиме наступний
код:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@EnableAutoConfiguration
public class MyApplication {
@RequestMapping("/")
String home() {
return "Hello World!";
}
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
Хоча коду не так вже й багато, але відбувається дуже багато. Розглянемо важливі елементи в наступних кількох розділах.
Інформації @RestController та @RequestMapping
Перша анотація для нашого класу MyApplication
— це @RestController
. Вона
відома як стереотипнаанотація. Ця анотація є підказкою для людей, які читають код,
і для Spring, що клас відіграє певну роль. В цьому випадку наш клас є @Controller
для
веб, тому Spring враховує його при обробці вхідних вебзапитів.
Анотація @RequestMapping
передає інформацію про "маршрутизації". Вона повідомляє
Spring, що будь-який HTTP-запит за допомогою /
слід відображати на метод
home
. Анотація @RestController
повідомляє Spring, що необхідно вивести
результуючий рядок назад безпосередньо викликаючою програмою.
@RequestMapping
є анотаціями Spring MVC (вони не характерні для Spring Boot).
Анотація @EnableAutoConfiguration
Друга анотація на рівні класу — це @EnableAutoConfiguration
. Вона повідомляє Spring
Boot, що потрібно "вгадати", як потрібно сконфігурувати Spring, ґрунтуючись на доданих вами
jar-залежностях. Оскільки spring-boot-starter-web
додав Tomcat і Spring MVC, засіб
автоконфігурування передбачає, що ти розробляєш вебдодаток, і налаштовує Spring відповідним чином.
Метод "main"
Заключною частиною нашої програми є метод main
. Це стандартний метод, який відповідає
стандарту Java для точки входу до програми. Наш метод main делегує повноваження класу SpringApplication
для Spring Boot, викликаючи run
. SpringApplication
здійснює початкове
завантаження нашої програми, запускаючи Spring, який, у свою чергу, запускає автоматично налаштований
вебсервер Tomcat. Нам необхідно передати MyApplication.class
як аргумент у метод
run
, щоб повідомити SpringApplication
, який компонент Spring є первинним.
Масив args
також передається для відкриття будь-яких аргументів командного рядка.
Виконуємо приклад
На цьому етапі програма вже має працювати. Оскільки ви використовували POM-модель з
spring-boot-starter-parent
,
у тебе є мета run
, яку можна використовувати для запуску програми. Вводимо mvn
spring-boot:run
з кореневого каталогу проекту, щоб запустити програму. Ти маєш побачити
виведення типу такого:
$ mvn spring-boot:run
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.7.5)
....... . . .
....... . . . (log output here)
....... . . .
........ Started MyApplication in 2.222 seconds (JVM running for 6.514)
Якщо ти відкриєш веббраузер на localhost:8080
,
то побачиш наступне повідомлення:
Hello World!
Щоб поетапно вийти з програми, натисни ctrl-c
.
Створення виконуваного jar-файлу
Ми завершуємо наш приклад створенням повністю самодостатнього виконуваного jar-файлу, який можна виконувати у виробничому оточенні. Виконувані jar-файли (іноді звані "fat (товстими) jar-файлами") — це архіви, що містять скомпільовані класи разом з усіма jar-залежностями, які необхідні коду для виконання.
Щоб створити виконуваний jar-файл, необхідно додати spring-boot-maven-plugin
до нашого
pom.xml
. Для цього вставляємо наступні рядки нижче секції dependencies
:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
spring-boot-starter-parent
включає
конфігурацію <executions>
для прив'язки мети repackage
. Якщо ти не
використовуєш батьківську POM-модель, тобі необхідно оголосити цю конфігурацію самостійно. Таким
чином:
$ mvn package
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building myproject 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] .... ..
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ myproject ---
[INFO] Building jar: /Users/developer/example/spring-boot-example/target/myproject-0.0.1-SNAPSHOT.jar
[INFO]
[INFO] --- spring-boot-maven-plugin:2.7.5:repackage (default) @ myproject ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
Якщо ти подивишся в каталог target
, маєш побачити там myproject-0.0.1-SNAPSHOT.jar
.
Розмір файлу має становити близько 10 МБ. Якщо хочеш заглянути всередину, можна
використовувати jar tvf
, як показано нижче:
$ jar tvf target/myproject-0.0.1-SNAPSHOT.jar
У target
каталозі також має бути присутнім набагато менший файл з ім'ям myproject-0.0.1-SNAPSHOT.jar.original
.
Це оригінальний jar-файл, який Maven створив до того, як він був перепакований Spring Boot.
Щоб запустити цю програму, використовуй команду java -jar
, як показано нижче:
$ java -jar target/myproject-0.0.1-SNAPSHOT.jar
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.7.5)
....... . . .
....... . . . (log output here)
....... . . .
........ Started MyApplication in 2.536 seconds (JVM running for 2.864)
Як і раніше, щоб вийти з програми, натисни ctrl-c
.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ