Spring Boot не просто так любят разработчики — он предлагает множество удобных компонентов, которые делают жизнь программиста проще (и, возможно, веселее). Давайте разберём три ключевых составляющих:
- Стартовые зависимости (Starters)
- Автоконфигурация (Auto-Configuration)
- Встроенные серверы
1. Стартовые зависимости (Starters) — наборы всего нужного
Помните, как в классическом Spring приходилось долго искать и подключать нужные библиотеки? Spring Boot решает эту проблему с помощью стартеров (starters). Это готовые наборы библиотек для разных задач.
Хотите создать веб-приложение? Просто добавьте spring-boot-starter-web, и Spring Boot сам подключит всё необходимое: Tomcat для запуска, библиотеки для REST API и обработки запросов.
Почему это удобно?
Представьте, что вы делаете пиццу. Вместо того чтобы бегать по магазинам и искать отдельно тесто, сыр, соус и специи, вы берёте готовый набор "Всё для пиццы". Стартеры работают так же — они содержат все нужные компоненты для конкретной задачи.
Давайте попробуем! Добавим стартер для веб-приложения:
Maven
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
Gradle
implementation 'org.springframework.boot:spring-boot-starter-web'
Готово! Spring Boot подключит все нужные библиотеки, и вы можете сразу начинать разработку.
Полезные стартовые зависимости
Вот те, которые вы точно встретите чаще всего:
- spring-boot-starter-web — для веб-приложений и REST API.
- spring-boot-starter-data-jpa — для работы с базами данных через JPA.
- spring-boot-starter-security — для добавления фич безопасности.
- spring-boot-starter-test — для написания тестов.
Spring Boot позаботился даже об экстремальных ситуациях и добавил spring-boot-starter-logging по умолчанию. Потому что кто не любит читать логи на проде, правда?
2. Автоконфигурация (Auto-Configuration)
В старые и не такие уж и добрые времена каждый Spring-проект начинался с часов XML-конфигурации.
От одних воспоминаний об этих бесконечных <bean> бросает в дрожь. К счастью, автоконфигурация в Spring Boot перевернула этот мир - теперь Spring сам анализирует ваши зависимости и настраивает всё необходимое. Добавили H2 в pom.xml? Бам! У вас уже готово подключение к базе данных.
Как это работает?
Автоконфигурация — это набор готовых предустановленных правил. Например, если в вашем classpath найдена библиотека spring-web, то Spring Boot настроит веб-сервер. Если найдена spring-data-jpa, он автоматически настроит JPA и EntityManager.
Аннотация @EnableAutoConfiguration
Давайте взглянем на нашу любимую аннотацию @SpringBootApplication, которая объединяет:
@Configuration— определяет, что это конфигурационный класс.@EnableAutoConfiguration— включает магию автоконфигурации.@ComponentScan— сканирует классы нашего приложения.
Автоконфигурация будет работать по умолчанию. Но что, если вам нужно отключить её для специфического компонента?
Добавьте это в основной класс приложения:
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class MyApp {
public static void main(String[] args) {
SpringApplication.run(MyApp.class, args);
}
}
Теперь никакой автоматической настройки для DataSource (подключение к базе) — вы сами выбираете, что и как настраивать.
3. Встроенные серверы
Spring Boot поставляется со встроенными серверами, как, например, Tomcat, Jetty или Undertow. Это значит, что вы больше не обязаны вручную настраивать и деплоить приложение на каком-то внешнем сервере. Запустили приложение, и сервер стартует вместе с ним.
Теперь сервер "встроен", как модуль Wi-Fi в современный холодильник.
Преимущества встроенных серверов
- Простота запуска: меньше забот о конфигурации стороннего сервера.
- Мобильность: приложение работает везде — локально, в тестовой среде или в облаке.
- Поддержка DevOps: упрощает автоматизацию и CI/CD. Вам не нужно устанавливать отдельные серверы на каждом этапе.
Изменение настроек сервера
Изменить настройки можно application.properties или application.yml.
Например, чтобы изменить порт:
server.port=8081
Теперь ваш сервер будет работать на порту 8081. Хотите сменить сервер с Tomcat на Jetty? Просто добавьте зависимость:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
И удалите Tomcat:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
Простая замена зависимостей — и сервер готов!
Практика: Ваша первая магическая конфигурация
Теперь, когда мы обсудили основы компонентов Spring Boot, давайте попробуем настроить простое приложение и используем стартеры, автоконфигурацию и встроенный сервер вместе.
Шаг 1. Создаём проект
Перейдите на Spring Initializr и создайте новый проект с зависимостью spring-boot-starter-web.
Шаг 2. Добавляем контроллер
Создайте REST-контроллер для приветствия:
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello() {
return "Привет, Spring Boot!";
}
}
Шаг 3. Настраиваем сервер
В application.properties добавьте это:
server.port=8082
Теперь сервер будет слушать на порту 8082.
Шаг 4. Запускаем
Запустите приложение — и магия Spring Boot начнёт работать. Откройте браузер по адресу http://localhost:8082/hello, и вы увидите любезное "Привет, Spring Boot!"
Всё это — лишь начало вашей истории с Spring Boot. Стартовые зависимости, автоконфигурация и встроенные серверы — это фундамент, на котором строятся быстрые, удобные и мощные приложения. Следующий шаг — погружение в настройки автоконфигурации, чтобы ваша магия стала по-настоящему кастомной.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ