Программисты – люди неглупые. А ещё любители автоматизировать всякие похожие друг на друга задачи. Одной из таких задач в рамках фреймворка Spring является создание и настройка проекта. Чтобы разработчики могли не сетовать на сложные манёвры с зависимостями, они могут воспользоваться Spring Boot.
Давайте узнаем, как использовать Spring Boot, как создать и настроить проект с зависимостями, и даже как запустить его в браузере. Делать я это буду в среде разработки IntelliJ IDEA Ultimate Edition.
Что такое Spring Boot
Spring Boot – это фреймворк в семействе Spring Framework для создания веб-приложений на языке Java. Он предоставляет простой способ разработки Spring-приложений с минимальными усилиями по настройке. Таким образом, разработчики могут направлять свои усилия на написание самого проекта, а не возиться с его настройкой и конфигурациями.
SpringBoot-приложение имеет свою типичную структуру. Исходный код Java располагается внутри папок src/main/java. Ресурсы вроде файлов конфигурации, картинок, css, js и так далее хранятся внутри папок src/main/resources.
Чтобы SpringBoot-приложение понимало, что именно нужно запускать, существует специальная аннотация @SpringBootApplication. Ей помечается тот класс, который будет запускаться при запуске программы. Вдобавок, этот класс должен содержать метод main(), который будет точкой входа в приложение.
Создание проекта
Итак, для создания проекта Spring Boot можно воспользоваться удобным инструментом – Spring Initializer. В общей сложности, это сайт, который позволяет выбрать зависимости, необходимые для проекта. После этого можно сгенерировать получившийся проект.
Нужно перейти на этот сайт или ввести в поисковике “Spring Initializer”:
Теперь нужно настроить будущий проект. В качестве сборщика возьмём Maven. Язык программирования, конечно же, Java. Версию Spring Boot и Java возьмём такую, какую предлагают по умолчанию. Packaging – Jar.
А теперь нужно ввести немного данных о будущем приложении:
- Group – группа пакетов, пространство имён проекта. В сущности – несколько слов через точку. Я задам com.myapp.
- Artifact – базовый пакет приложения. Обычно используется в качестве основного имени для проекта. Задам ему значение backend.
- Name – название проекта. Будет идентично параметру Artifact, тоже backend.
- Description – пару слов о проекте. Оставлю как есть – “Demo project for Spring Boot”.
- Package name – название пакета – составляется автоматически из заданных заранее Group и Artifact. Так что менять это поле не буду.
Отлично, базовая информация о проекте записана. Теперь самое время обратиться к правой колонке на сайте – зависимостям проекта. Здесь нужно указать, что мы хотим использовать в своём проекте.
Когда вы нажмёте справа сверху кнопку “Add dependencies”, появится диалоговое окно. В нём содержится список зависимостей, доступных к добавлению в ваш проект.
Среди них нам понадобится несколько штук, а именно – 4. Для просмотра зависимостей можно пролистывать список, а можно и вводить ключевые слова в поисковую строку сверху.
Вам нужно определиться, какую базу данных вы собираетесь использовать в проекте. Это может быть MySQL, MS SQL Server, PostgreSQL, Oracle и другие. От этого зависит зависимость (ха-ха), связанная с БД, которую вам предстоит сейчас добавить.
Я буду использовать СУБД PostgreSQL. Вы можете использовать другую – разницы в разработке проекта особо не будет. Кстати, минимум различий при использовании разных СУБД обеспечивается благодаря подходу фреймворка Spring. Это удобно. Впоследствии мы создадим, настроим и подключим БД к проекту.
Посмотрите: в поиске по нескольким буквам можно найти нужную вам зависимость, связанную с выбранной вами СУБД. Spring Initializer содержит и многие другие драйверы для различных баз данных.
Я добавила последний – PostgreSQL Driver. Теперь давайте разберёмся с остальными зависимостями будущего проекта.
Для нашего проекта, помимо зависимости для СУБД, потребуются Spring Web, Spring Data JPA и Lombok. Теперь обо всех по порядку.
- Spring Web – зависимость для создания Web-приложения на Spring.
- Spring Data JPA – работа с данными из базы как с Java-объектами, удобная передача этих объектов.
- Lombok – очень крутой инструмент для сокращения однотипного кода (например, геттеров, сеттеров, конструкторов, toString(), equals() и т.д.). Позволяет лаконично замещать его при помощи аннотаций.
- PostgreSQL Driver – для соединения и работы с базой данных PostgreSQL.
Настройка проекта завершена! Осталось нажать на кнопку Generate внизу, и zip-архив с проектом начнёт скачиваться.
Когда архив будет скачан, разархивируйте его, а затем откройте с помощью среды разработки. У меня это IntelliJ IDEA Ultimate Edition.
Среда разработки покажет специальным значком, какая именно папка может быть открыта как проект. Внутри этой папки должны содержаться характерные папки и файлы: .mvn, src, pom.xml.
После нажатия кнопки OK нужно будет немного подождать. Среда разработки подумает, скачает зависимости, настроит проект.
После того, как все окошки и полосы состояния отработают, можно посмотреть, что же получилось.
Содержимое проекта
Итак, исходный код можно найти внутри папок src/main/java. Здесь хранится папка с указанным нами ранее названием пакета, com.myapp.backend. А в нём – файл с кодом на Java – BackendApplication.java.
Ресурсы проекта хранятся внутри папок src/main/resources. Пока что там пусто, кроме важного файла application.properties. Этот файл задаёт самые главные настройки приложения. Туда же мы впоследствии будем писать информацию для подключения к базе данных.
Также в проекте располагается файл pom.xml. Там хранятся зависимости проекта. В этом файле уже находится много кода, поскольку его автоматически сгенерировал сайт Spring Initializer.
В файле pom.xml расположены зависимости, которые мы указали на сайте: Spring Data JPA, Spring Web, Lombok, PostgreSQL Driver. Это можно увидеть в коде файла pom.xml:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
<?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> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.2.1</version> <relativePath/> </parent> <groupId>com.myapp</groupId> <artifactId>backend</artifactId> <version>0.0.1-SNAPSHOT</version> <name>backend</name> <description>Demo project for Spring Boot</description> <properties> <java.version>17</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <excludes> <exclude> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </exclude> </excludes> </configuration> </plugin> </plugins> </build> </project> |
Файл BackendApplication.java содержит маленький класс. Но этот класс – главный в приложении, так как он помечен аннотацией @SpringBootApplication. Именно с него будет начинаться программа. Вот, что там сейчас лежит:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
package com.myapp.backend; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class BackendApplication { public static void main(String[] args) { SpringApplication.run(BackendApplication.class, args); } } |
Запуск проекта
Чтобы запустить проект, можно нажать на зелёную стрелочку запуска справа сверху. Однако сейчас это завершится ошибкой:
Так происходит потому, что мы указали в зависимостях Spring Data JPA, а источники данных ещё не указали. Но с базой данных поработаем попозже. Давайте сейчас запустим проект без неё. Для этого нужно закомментировать в файле pom.xml всё, связанное со Spring Data JPA. После чего обязательно нужно синхронизировать изменения, чтобы среда разработки обновила проект. Уже потом можно его запускать.
Изменённый pom.xml:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
<?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> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.2.1</version> <relativePath/> </parent> <groupId>com.myapp</groupId> <artifactId>backend</artifactId> <version>0.0.1-SNAPSHOT</version> <name>backend</name> <description>Demo project for Spring Boot</description> <properties> <java.version>17</java.version> </properties> <dependencies> <!--<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency>--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <!--<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <excludes> <exclude> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </exclude> </excludes> </configuration> </plugin> </plugins> </build>--> </project> |
Теперь по кнопке запуска всё будет хорошо, проект запустится. Но пока что в нём ничего нет. Давайте создадим маленький класс-контроллер HelloController, который будет выводить “Hello, Beauty of Java!”. Этот файл нужно расположить там же, где находится файл главного класса приложения, BackendApplication.java. Напишем туда следующий код:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
package com.myapp.backend; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class HelloController { @GetMapping("/hello") public String helloWorld() { return "Hello, Beauty of Java!"; } } |
Подробно разбирать, что здесь к чему, будем в следующих статьях. А сейчас давайте посмотрим, что получилось! Чтобы обратиться к запущенному проекту, нужно в браузере написать в адресной строке localhost:8080/hello. localhost означает подключение к самому себе (к этому компьютеру), 8080 – это порт, а /hello – это строка, указанная нами в классе HelloController.
Ура, получилось! Вы можете немного поиграться с текстом или строкой вместо “/hello“, чтобы наглядно понять, как это работает. Вот и запущен SpringBoot-проект! Пока что не такой масштабный, но это только начало.
Что ж, это было увлекательное знакомство со Spring Boot и его удобствами. В итоге мы создали и запустили SpringBoot-проект. Не забудьте раскомментировать зависимости в файле pom.xml – они нам пригодятся для следующих уроков. Удачи в back-end разработке!