Spring Boot

Проработать

  1. Введение в Spring Boot
  2. Учебник Thymeleaf: Глава 1. Знакомство
  3. Руководство: Thymeleaf + Spring. Часть 1
  4. Spring Boot Roadmap - How To Master Spring Boot
  5. Spring Boot
  6. Spring Boot: от начала до продакшена
  7. Введение в Spring Boot: создание простого REST API на Java
  8. Spring Boot, React.js & AWS S3 Full Stack Development
  9. Евгений Борисов, Кирилл Толкачев — Boot yourself, Spring is coming (Часть 1)
  10. Евгений Борисов — Spring – Глубоко и не очень
  11. Пишем Java веб-приложение на современном стеке. С нуля до микросервисной архитектуры. Часть 1
  12. Кэширование данных в приложении на Spring Boot
  13. Spring Boot с НУЛЯ - Курс для НАЧИНАЮЩИХ с ПРАКТИКОЙ [2023]
  14. Spring Tips: Spring Boot 3.2
  15. Spring Boot стартеры
  16. Видеоуикенд #70. Создаем собственный Spring Boot Starter, смотрим тестовое собеседование Junior Java-разработчика, узнаем различия между монолит и легаси кодом, и оцениваем шансы фрилансеров глазами заказчика
  17. Два SpringBoot проекта за час: Web и Reactive.

Что это

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

Как оно работает:

Автоконфигурация

Автоконфигурация - метод работы в Spring Boot, позволяющий сократить количество действий, которые должны предпринимать разработчики. Он автоматически настраивает приложение Spring на основе ранее добавленных зависимостей.

Зависимости Opinionated

Opinionated означает, что Spring Boot самостоятельно определяет набор настроенных bean-компонентов по умолчанию, которые вы можете переопределить при необходимости. Более того, этот фреймворк выбирает пакеты для установки с учетом необходимых вам зависимостей. Таким образом, разработчики Spring Boot сразу же начинают создавать свои приложения, уделяя больше внимания бизнес-логике, поскольку большая часть работы выполняется самим фреймворком.

Встроенные серверы

Встроенный сервер - это часть приложения. Это означает, что вам не нужно предварительно устанавливать его в среде развертывания. Spring Boot по умолчанию предлагает встроенный сервер Tomcat, но вы можете изменить его на Jetty или Undertow.

Работа в автономном режиме

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

Версионирование

Совместимость по версиям. Указываем одну версию, остальное подберет Spring Boot.

Способы инициализации Spring Boot

  1. Spring Boot CLI
  2. Сайт для создания основы для проекта на Spring Boot

Модули

Гайды

Front parts:

  1. Работа с jsp
  2. Thymeleaf - замена JSP в приложениях Spring MVC. Способный обрабатывать HTML, XML, JavaScript, CSS и даже простой текст.

DataBase connectors:

DataBase managers:

  1. Liquibase
  2. Flyway

Инициализация DB

Помещаем SQL файлы в 'resources'

Или указываем путь property. Пример для 'resources/jdbc'

## jdbc schema creation
spring.sql.init.schema-locations=classpath:jdbc/schema.sql
## jdbc test data
spring.sql.init.data-locations=classpath:jdbc/test-data.sql
        

Spring profile

Профили Spring позволяют кастомизировать приложение для работы в различном окружении.

В зависимости от активного профиля можно:

  1. Использовать различные реализации одного и того же bean.
  2. Присваивать различные значения свойствам(properties) приложения.

Реализации bean

Если Spring-бин имеет аннотацию @Profile, он будет инстанциирован только если указанный в аннотации профиль соответствует какому-либо активному профилю.

Пример:

public interface SomeService {
    String NAME = "demo_SomeService";

    String hello(String input);
}

@Service(SomeService.NAME)
@Profile("dev")
public class SomeDevServiceBean implements SomeService {
    @Override
    public String hello(String input) {
        return "Service stub: hello " + input;
    }
}

@Service(SomeService.NAME)
@Profile("prod")
public class SomeProdServiceBean implements SomeService {
    @Override
    public String hello(String input) {
        return "Real service: hello " + input;
    }
}
        

Properties

Для того, чтобы определить некоторые специфичные для профиля свойства приложения, создайте файл application-имя_профиля.properties в том же пакете, что и основной файл application.properties. Специфичный для профиля файл будет загружен сразу после базового файла, поэтому объявленные в нем свойства переопределят свойства, заданные в базовом файле.

Пример:

com/company/demo/application.properties
com/company/demo/application-prod.properties
        

Для запуска определенного profile через Idea, необходимо добавить в VM option -Dspring.profiles.active=имя_профиля

Пример

-Dspring.profiles.active=prod
        

Преимущества Spring Boot

  1. Быстрая и легкая разработка приложений на основе Spring.
  2. Автоконфигурация всех компонентов для приложения Spring производственного уровня.
  3. Готовые встроенные серверы (Tomcat, Jetty и Undertow), обеспечивающие ускоренное и более продуктивное развертывание приложений. По умолчанию Tomcat.
  4. HTTP end-points, позволяющие вводить внутренние функции приложения, такие как показатели, состояние здоровья и другие.
  5. Отсутствие конфигурации XML.
  6. Огромный выбор плагинов, облегчающих работу разработчиков со встроенными базами данных и базами данных в памяти.
  7. Легкий доступ к базам данных и службам очередей, таким как MySQL, Oracle, MongoDB, Redis, ActiveMQ и другим.

Недостатки Spring Boot

  1. Отсутствие контроля. Spring Boot создает множество неиспользуемых зависимостей, что приводит к большому размеру файла развертывания.
  2. Spring Boot не подходит для создания монолитных приложений. Ориентирован на Микросервисы.

Testcontainers

Testcontainers - фреймворк интегрированный в Spring boot, который используется для запуска окружения интеграционных тестов в контейнерах Docker.