Backend
October 10, 2023

Spring Boot: создание простого веб-приложения

Расскажем о том, как создать свое веб-приложение на Spring Boot. Эта технология сейчас очень популярна среди разработчиков, потому что позволяет быстро и просто писать веб-сайты и приложения.

Что такое Spring Boot? Это инструмент для создания проектов на языке Java. Он уже содержит в себе все необходимые библиотеки и настройки, поэтому разработчику не нужно тратить много времени на рутинную работу. С Spring Boot можно запустить готовое веб-приложение всего за пару минут!

В этой статье я расскажу, как установить Spring Boot, создать простое веб-приложение, подключить к нему базу данных и развернуть в интернете. В процессе мы научимся:

  • Устанавливать необходимые инструменты для разработки
  • Создавать проекты на Spring Boot
  • Писать код для веб-страниц и обработки данных
  • Подключать базы данных и выполнять запросы
  • Публиковать готовое приложение в интернете

Если ты уже знаком с Java и веб-разработкой - отлично! Эти знания пригодятся. Но даже новички смогут разобраться по этой статье. Главное - желание создать свое первое веб-приложение!

Установка Spring Boot

Для начала нам нужно установить необходимые инструменты.

  1. Скачай и установи JDK (комплект для разработки на Java). Минимальная версия - 8.
  2. Скачай и установи среду разработки IntelliJ IDEA. Это удобный инструмент для написания кода. Есть бесплатная версия Community.
  3. Скачай и установи MySQL (или любую другую базу данных). Мы будем использовать её для хранения данных.
  4. Скачай и установи сам Spring Boot из официального репозитория.

На этом подготовка окончена, можно приступать к разработке!

Создание проекта

Запусти IntelliJ IDEA и создай новый проект. Выбери Spring Initializr - это специальный инструмент от Spring, который поможет быстро создать основу.

Дай проекту имя, например "MyFirstApp". Выбери следующие модули:

  • Spring Web (для веб-разработки)
  • Spring Data JPA (для работы с базами данных)
  • MySQL Driver (драйвер для подключения к MySQL)

Нажми Generate - и IntelliJ IDEA автоматически создаст проект со всеми нужными файлами и настройками!

Структура проекта

В корне проекта находятся конфигурационные файлы:

  • pom.xml - описание проекта и зависимостей
  • application.properties - настройки приложения

В папке src/main/java находится исходный код:

  • MyFirstAppApplication.java - главный класс приложения
  • controller - контроллеры для обработки запросов
  • model - модели данных
  • repository - репозитории для работы с базой данных

Ресурсы как картинки и статические файлы хранятся в папке src/main/resources.

Шаблоны страниц лежат в папке src/main/resources/templates.

Теперь мы готовы написать код нашего первого приложения!

Разработка веб-приложения

Создадим простой сайт-визитку с информацией о себе. Для начала нужно создать контроллер:

@Controller
public class MainController {

  @GetMapping("/")
  public String home() {
    return "home"; 
  }
  
}

Этот класс будет обрабатывать запросы на главную страницу. Метод home() возвращает имя шаблона "home".

Добавим шаблон home.html в папку templates:

<!DOCTYPE html>
<html>
<head>
  <title>Моя визитка</title>
</head>
<body>
  <h1>Привет! Меня зовут Вася.</h1>
</body>
</html>

Теперь запусти приложение и перейди по адресу http://localhost:8080. Увидишь надпись "Привет!.." - значит все работает!

Добавим еще пару страниц - обо мне и моих увлечениях. Соответственно создадим два метода в контроллере:

@GetMapping("/about")
public String about() {
  return "about";
}  

@GetMapping("/hobby")
public String hobby() {
  return "hobby";
}

И два шаблона.

Теперь наш простой сайт готов! Можешь поэкспериментировать и добавить страницы, стили CSS, картинки.

Подключение базы данных

Сайт-визитка это хорошо, но обычно приложения работают с данными. Добавим к нашему проекту базу данных.

В файле application.properties пропишем настройки для подключения к MySQL:

spring.datasource.url=jdbc:mysql://localhost:3306/myfirstapp
spring.datasource.username=root
spring.datasource.password=qwerty

Где myfirstapp - имя базы данных, root - логин, qwerty - пароль. Создай эту БД в MySQL.

Теперь создадим простую сущность Product (товар):

@Entity
public class Product {

  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private Long id;
  private String title;
  private double cost;
  
  // геттеры и сеттеры  
}

И репозиторий для доступа к данным:

public interface ProductRepository extends JpaRepository<Product, Long> {

}

Всё готово! Теперь из контроллера можно делать запросы к БД используя репозиторий:

@Autowired
private ProductRepository productRepository;

@GetMapping("/products")
public String showProducts(Model model) {
  
  List<Product> products = productRepository.findAll();
  
  model.addAttribute("products", products);
  
  return "products";
}

Аналогично можно реализовать операции создания, обновления и удаления товаров.

Тестирование

Прежде чем публиковать, нужно протестировать наше приложение.

Для контроллеров можно написать юнит-тесты с помощью JUnit и проверить, что запросы работают корректно:

@ExtendWith(MockitoExtension.class)
class MainControllerTest {

  @MockBean
  private ProductRepository productRepository; 
  
  @Autowired
  private MainController controller;
  
  @Test
  public void testHomePage() throws Exception {
    String viewName = controller.home();
    assertEquals("home", viewName);
  }
}

Для репозиториев - интеграционные тесты, чтобы убедиться, что к базе данных всё подключилось:

@SpringBootTest
class ProductRepositoryTest {

  @Autowired 
  private ProductRepository repository; 
  
  @Test
  public void testFindAll() {
    List<Product> products = repository.findAll();
    Assertions.assertEquals(3, products.size());
  }  
}

Если все тесты проходят - можно деплоить!

Деплой

Чтобы опубликовать веб-приложение, его нужно разместить на специальном хостинге.

Сборку проекта обычно делают с помощью Maven. Для этого в pom.xml нужно описать все зависимости.

Потом создают JAR-файл приложения командой:

mvn package

Этот файл уже можно деплоить на выбранный хостинг согласно его инструкциям.

Например, для хостинга Heroku нужно:

  1. Создать аккаунт на сайте Heroku
  2. Установить HEROKU CLI
  3. Выполнить команду git init и добавить репозиторий
  4. Выполнить команду heroku create
  5. Сделать коммит и пуш на Heroku git push heroku master

После этих шагов приложение будет опубликовано на Heroku и доступно online!

Заключение

В этой статье мы разобрали то, как создать простое веб-приложение на Spring Boot с нуля.

Были рассмотрены следующие темы:

  • Установка инструментов разработки
  • Создание проекта и структура кода
  • Написание контроллеров и шаблонов
  • Подключение базы данных
  • Тестирование приложения
  • Деплой на хостинг

В дальнейшем, вы можете изучить дополнительные возможности:

  • Работа с REST API
  • Интеграция с React или Angular
  • Развёртывание в Docker контейнерах
  • Мониторинг и логирование

Успехов в создании собственных проектов!