Основные компоненты и внутреннее устройство фреймворка Spring Boot

В моем предыдущем посте «Введение в Spring Boot» мы обсудили основы Spring Boot. Теперь мы обсудим “Каковы основные компоненты Spring Boot” и “Как Spring Boot работает внутри”.

Основные компоненты фреймворка Spring Boot

В фреймворке Spring Boot в основном четыре основных компонента.

  • Spring Boot Starters
  • Spring Boot AutoConfigurator
  • Spring Boot CLI
  • Spring Boot Actuator

ПРИМЕЧАНИЕ:- Помимо этих четырех основных компонентов, существуют еще два компонента Spring Boot:

  • Spring Initilizr
  • Spring Boot IDEs

Для быстрого запуска новых проектов Spring Boot мы можем использовать веб-интерфейс “Spring Initializr”. URL Spring Initializr: https://start.spring.io. У нас есть много сред разработки Spring Boot, таких как Eclipse IDE, IntelliJ IDEA, Spring STS Suite и др. Эти два компонента мы обсудим в следующих постах. Теперь мы подробно обсудим каждый из этих четырех компонентов Spring Boot поочередно.

Spring Boot Starter

Spring Boot Starters – одна из основных ключевых функций или компонентов фреймворка Spring Boot. Основная задача Spring Boot Starter заключается в объединении группы общих или связанных зависимостей в единые зависимости. Мы рассмотрим это утверждение подробно на примере. Например, мы хотим разработать веб-приложение Spring с веб-сервером Tomcat. Тогда нам нужно добавить следующие минимальные зависимости в файл pom.xml вашего проекта Maven или файл build.gradle вашего проекта Gradle

  • Файл jar основных компонентов Spring (spring-core-xx.jar)
  • Файл jar веб-компонентов Spring (spring-web-xx.jar)
  • Файл jar веб MVC Spring (spring-webmvc-xx.jar)
  • Файл jar сервлетов (servlet-xx.jar)

Если мы хотим добавить что-то связанное с базой данных, то нам нужно добавить соответствующие зависимости, такие как файл jar Spring JDBC, файлы jar Spring ORM, файл jar Spring Transaction и т. д.

  • Файл jar Spring JDBC (spring-jdbc-xx.jar)
  • Файл jar Spring ORM (spring-orm-xx.jar)
  • Файл jar Spring Transaction (spring-transaction-xx.jar)

Нам необходимо определить множество зависимостей в наших файлов сборки. Это очень трудоемкая и громоздкая задача для разработчика. Кроме того, это увеличивает размер файла сборки. Какое решение позволяет избежать определения такого количества зависимостей в наших файлах сборки? Решение заключается в компоненте Spring Boot Starter. Компонент Spring Boot Starter объединяет все связанные JAR-файлы в один JAR-файл, чтобы мы могли добавить только одну зависимость JAR-файла в наши файлы сборки. Вместо добавления вышеуказанных 4 JAR-файлов в наш файл сборки, нам нужно добавить только один JAR-файл: JAR-файл “spring-boot-starter-web”. Когда мы добавляем зависимость от JAR-файла “spring-boot-starter-web” в наш файл сборки, то фреймворк Spring Boot автоматически загружает все необходимые JAR-файлы и добавляет их в путь к классам нашего проекта. Таким же образом, JAR-файл “spring-boot-starter-logging” загружает все свои зависимые JAR-файлы, такие как “jcl-over-slf4j, jul-to-slf4j, log4j-over-slf4j, logback-classic”, в путь к классам нашего проекта.

Основные преимущества Spring Boot Starter:

  • Spring Boot Starter упрощает определение множества зависимостей и упрощает зависимости сборки проекта.
  • Spring Boot Starter упрощает зависимости сборки проекта.

Вот и все, что касается компонента Spring Boot Starter. Мы обсудим некоторые дополнительные детали с примерами Spring Boot в следующих сообщениях.

Автоконфигуратор Spring Boot

Еще одним важным ключевым компонентом Spring Boot Framework является Spring Boot AutoConfigurator. Большинство критиков Spring IO Platform (Spring Framework) считают, что “для разработки приложения на основе Spring требуется много конфигурации (либо XML-конфигурация, либо аннотационная конфигурация). Тогда как решить эту проблему. Решение этой проблемы – это Spring Boot AutoConfigurator. Основная ответственность Spring Boot AutoConfigurator – сокращение конфигурации Spring. Если мы разрабатываем приложения Spring в Spring Boot, то нам не нужно определять одиночную XML-конфигурацию и практически нет или минимальная аннотационная конфигурация. Компонент Spring Boot AutoConfigurator будет заботиться о предоставлении этой информации. Например, если мы хотим объявить приложение Spring MVC с использованием платформы Spring IO, то нам нужно определить много XML-конфигурации, такой как представления, резольверы представлений и т. д. Но если мы используем Spring Boot Framework, то нам не нужно определять эту XML-конфигурацию. Spring Boot AutoConfigurator заботится об этом. Если мы используем файл jar “spring-boot-starter-web” в файле сборки нашего проекта, то Spring Boot AutoConfigurator автоматически разрешит представления, резольверы представлений и т. д. Кроме того, Spring Boot уменьшает определение аннотационной конфигурации. Если мы используем аннотацию @SpringBootApplication на уровне класса, то Spring Boot AutoConfigurator автоматически добавит все необходимые аннотации в байт-код Java-класса. Если мы прочитаем документацию Spring Boot, мы можем найти следующее определение для @SpringBootApplication.

@Target(value=TYPE)
@Retention(value=RUNTIME)
@Documented
@Inherited
@Configuration
@EnableAutoConfiguration
@ComponentScan
public @interface SpringBootApplication

Это означает, что @SpringBootApplication = @Configuration + @ComponentScan + @EnableAutoConfiration. Вот как это работает с автоконфигурацией Spring Boot. Мы обсудим еще некоторые детали с примерами Spring Boot в следующих сообщениях. ПРИМЕЧАНИЕ:-

  • Проще говоря, Spring Boot Starter уменьшает зависимости сборки, а Spring Boot AutoConfigurator уменьшает конфигурацию Spring.
  • Как мы уже обсудили, Spring Boot Starter зависит от Spring Boot AutoConfigurator, и Spring Boot Starter автоматически запускает Spring Boot AutoConfigurator.

Spring Boot CLI

Spring Boot CLI (интерфейс командной строки) – это программное обеспечение Spring Boot для запуска и тестирования приложений Spring Boot из командной строки. Когда мы запускаем приложения Spring Boot с помощью CLI, оно внутренне использует компоненты Spring Boot Starter и Spring Boot AutoConfigurator для разрешения всех зависимостей и запуска приложения. Мы можем даже запускать веб-приложения Spring с помощью простых команд Spring Boot CLI. В Spring Boot CLI была добавлена новая команда “spring” для выполнения Groovy-скриптов из командной строки. Пример команды spring:

spring run HelloWorld.groovy

Вот здесь HelloWorld.groovy – это имя файла сценария Groovy. Как у исходных файлов на Java расширение *.java, у файлов сценариев Groovy – *.groovy. Команда “spring” выполняет HelloWorld.groovy и создает вывод. Компонент Spring Boot CLI требует много шагов, таких как установка CLI, настройка CLI, разработка простого приложения Spring Boot и его тестирование. Так что мы собираемся выделить еще один пост, чтобы обсудить это более подробно с некоторыми примерами Spring Boot. Пожалуйста, обратитесь к моему следующему посту о Spring Boot CLI.

Spring Boot Actuator

Компоненты Spring Boot Actuator предоставляют много функций, но две основные –

  • Предоставление конечных точек управления приложениям Spring Boot.
  • Метрики приложений Spring Boot.

Когда мы запускаем наше веб-приложение Spring Boot с помощью CLI, Spring Boot Actuator автоматически предоставляет имя хоста “localhost” и номер порта “8080” по умолчанию. Мы можем получить доступ к этому приложению, используя конечную точку “https://localhost:8080/”. Фактически мы используем методы HTTP-запросов, такие как GET и POST, для представления конечных точек управления с использованием Spring Boot Actuator. Мы рассмотрим еще некоторые детали о Spring Boot Actuator в следующих сообщениях.

Внутренности фреймворка Spring Boot

Это всегда рекомендуется понимать, как фреймворк Spring Boot уменьшает зависимости сборки, конфигурацию Spring и т. д. Как работает Spring Boot под капотом. Если вы знакомы с языком программирования Groovy, то вы знаете большую часть материала. На Groovy мы не должны добавлять некоторые импорты и не нужно добавлять некоторые зависимости в проект Groovy. Когда мы компилируем скрипты Groovy с использованием компилятора Groovy (groovyc), он автоматически добавляет все инструкции импорта по умолчанию, а затем их компилирует. Точно так же язык программирования Groovy содержит резольвер зависимостей JAR для разрешения и добавления всех необходимых файлов JAR в класспас проекта Groovy. Внутренне фреймворк Spring Boot использует Groovy для добавления некоторых значений по умолчанию, таких как инструкции импорта по умолчанию, метод main() приложения и т. д. При запуске сценариев Groovy из командной строки CLI используется этот метод main() для запуска приложения Spring Boot.

Грейп

Grape – это движок встроенного разрешения зависимостей. Grape – это менеджер зависимостей JAR, встроенный в Groovy. Grape позволяет быстро добавлять зависимости репозитория Maven в класспаф проекта, чтобы уменьшить определения файлов сборки. Модель программирования Spring Boot Framework в основном вдохновлена моделью программирования Groovy. Внутренне фреймворк Spring Boot зависит от двух основных компонентов: Groovy и Grape. Вы можете обратиться к документации по Grape по ссылке https://docs.groovy-lang.org/latest/html/documentation/grape.html для получения более подробной информации. Это все о компонентах и внутренностях Spring. Мы рассмотрим эти компоненты подробно на примерах Spring Boot в последующих сообщениях. Если у вас есть какие-либо вопросы, пожалуйста, оставьте комментарий.

Source:
https://www.digitalocean.com/community/tutorials/key-components-and-internals-of-spring-boot-framework