Spring Boot - расширение Spring, используемым для создания приложений на основе микросервисов.
Автоконфигурация - автоматически настраивает приложение Spring на основе ранее добавленных зависимостей. Например, при выборе одного из стартеров.
Opinionated означает, что Spring Boot самостоятельно определяет набор настроенных bean-компонентов по умолчанию, которые вы можете переопределить при необходимости. Более того, этот фреймворк выбирает пакеты для установки с учетом необходимых вам зависимостей. Таким образом, разработчики Spring Boot сразу же начинают создавать свои приложения, уделяя больше внимания бизнес-логике, поскольку большая часть работы выполняется самим фреймворком.
Встроенный сервер - это часть приложения. Это означает, что вам не нужно предварительно устанавливать его в среде развертывания. Spring Boot по умолчанию предлагает встроенный сервер Tomcat, но вы можете изменить его на Jetty или Undertow.
Spring Boot позволяет разработчикам настраивать и запускать автономные приложения Spring производственного уровня без их развертывания на веб-сервере. Чтобы запустить обычное Java-приложение, его необходимо упаковать, выбрать, загрузить и настроить веб-сервер, а также организовать процесс развертывания. Java-приложение, созданное в Spring Boot, нуждается только в упаковке, после чего оно готово к запуску с использованием простых команд.
Совместимость по версиям. Указываем одну версию, остальное подберет Spring Boot.
Spring Boot Actuator - это модуль (библиотека) добавляет к вашему приложению готовые инструменты для мониторинга и управления.
Помещаем 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 позволяют кастомизировать приложение для работы в различном окружении.
В зависимости от активного профиля можно:
Если 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;
}
}
Для того чтобы определить некоторые специфичные для профиля свойства приложения, создайте файл application-имя_профиля.properties в том же пакете, что и основной файл application.properties. Специфичный для профиля файл будет загружен сразу после базового файла, поэтому объявленные в нем свойства переопределят свойства, заданные в базовом файле.
Пример:
com/company/demo/application.properties
com/company/demo/application-prod.properties
Пример
-Dspring.profiles.active=prod
Testcontainers - фреймворк интегрированный в Spring boot, который используется для запуска окружения интеграционных тестов в контейнерах Docker.
Можно связать с мониторингом например Prometheus + Grafana.
Добавить зависимость:
implementation("org.springframework.boot:spring-boot-starter-actuator:4.0.0-M2")
В application.properties включить нужные эндпоинты:
management.endpoints.web.exposure.include=health,info,metrics
После запуска приложение будет доступно по:
http://localhost:8080/actuator/health
http://localhost:8080/actuator/metrics