Когда я впервые столкнулся со Spring Boot, большинству моих друзей должно быть так же любопытно, как и мне:
Почему Springboot не требует дополнительной установки Tomcat?
Почему в итоге? Начнем сегодняшнее путешествие с любопытства.
Открытымпредыдущий разделМы собрали проект tobebetterjavaer и нашли файл pom.xml, в нем можно увидеть родительский атрибут, код такой:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.1</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
Что это обозначает?
Это означает, что наш текущий проект Spring Boot зависит от родительского проекта spring-boot-starter-parent. Это немного похоже на расширение в Java.
Как просмотреть содержимое файла spring-boot-starter-parent.pom?
Если вы не уверены, где находится ваш локальный репозиторий Maven, вы можете запустить его в терминале.mvn help:effective-settings
Заказ.
В соответствии с родительским идентификатором группы, артефактом и версией расположение файла spring-boot-starter-parent.pom может быть заблокировано.
Открыв его текстовым редактором, можно примерно увидеть следующее:
- Версия JDK определяется как 1.8.
- Кодировка проекта по умолчанию — UTF-8.
- Среда сборки Maven
- и родительская зависимость spring-boot-dependencies
По мере того, как тыква рисует совок, мы таким же образом находим файл spring-boot-dependencies.pom. Вы можете видеть, что здесь определен ряд свойств и зависимостей, почти 2800 строк.
Существуют зависимости очереди сообщений, зависимости инструментария Commons, зависимости ссылки на базу данных, зависимости ссылки HTTP, зависимости семейства Spring, зависимости веб-сервера и многое другое.
Можно сказать, что это центр управления версиями, от которого зависит проект Spring Boot.
В центре управления версиями по умолчанию настроены версии всех базовых сред, требуемых проектом. Эти версии изменятся с обновлением версии Spring Boot. То есть разработчикам больше не нужно заботиться о версиях этих тривиальные зависимости Butler Spring Boot в порядке.
Spring Boot поможет нам выбрать самую стабильную новую версию, отражающую душу проекта Spring Boot:Соглашение о конфигурации", конечно, вы можете настроить его, если хотите, но это не обязательно, просто следуйте соглашениям.
Поймите это, давайте продолжим смотреть на файл pom.xml, который имеетspring-boot-starter-web
полагаться. На этот раз мы напрямую удерживаем клавишу Ctrl (в macOS это клавиша Command) и щелкаем левой кнопкой мыши, чтобы перейти к исходному файлу spring-boot-starter-web.pom.
Часть исходного кода выглядит следующим образом:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>2.6.1</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-json</artifactId>
<version>2.6.1</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<version>2.6.1</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.3.13</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.13</version>
<scope>compile</scope>
</dependency>
spring-web обеспечивает базовую интеграцию HTTP, включая некоторые удобные фильтры сервлетов, HTTP-вызовы Spring, инфраструктуру и технологии для интеграции с другими веб-фреймворками (Hessian, Burlap).
spring-webmvc — это реализация Spring MVC. spring-webmvc зависит от spring-web, поэтому его включение косвенно добавляет spring-web без необходимости явного добавления spring-web.
Взгляните на файл pom для spring-boot-starter-tomcat:
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<version>2.6.1</version>
<name>spring-boot-starter-tomcat</name>
<dependencies>
<dependency>
<groupId>jakarta.annotation</groupId>
<artifactId>jakarta.annotation-api</artifactId>
<version>1.3.5</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-core</artifactId>
<version>9.0.55</version>
<scope>compile</scope>
<exclusions>
<exclusion>
<artifactId>tomcat-annotations-api</artifactId>
<groupId>org.apache.tomcat</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-el</artifactId>
<version>9.0.55</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-websocket</artifactId>
<version>9.0.55</version>
<scope>compile</scope>
<exclusions>
<exclusion>
<artifactId>tomcat-annotations-api</artifactId>
<groupId>org.apache.tomcat</groupId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
</project>
Из этого видно, что контейнером запуска SpringBoot по умолчанию является Tomcat.Основные компоненты Tomcat, jakarta.annotation, tomcat-embed-core, tomcat-annotations-api, org.apache.tomcat.embed, представлены через Мейвен.
Основная версия — 9.0.55, а последняя версия 9.0.x на официальном сайте Tomcat — 9.0.56, что на одну версию выше.
Но это не имеет значения, скачайте напрямую исходный код версии 9.0.56 и сравните его, чтобы убедиться, что он примерно такой же.
Напротив, можно увидеть, что Tomcat, представленный Spring Boot, немного более оптимизирован и в целом такой же, что иОсновная причина, по которой Spring Boot не требует дополнительной установки Tomcat.
Стартер Spring Boot уже сделал это за нас. Это также важная причина популярности Spring Boot. Он экономит время разработчиков на настройке и больше фокусируется на реализации бизнес-логики и оптимизации производительности. Что касается этих сложных конфигураций, вы можете оставить их Spring Boot, большая экономка Он согласился Хорошие вещи, пока нет проблем, не нужно специальной настройки, просто используйте его.
Эта статья была включена в колонку с открытым исходным кодом «Дорога к продвинутым программистам Java», получившую более 1,0 тыс. звезд на GitHub. Эта колонка юмористическая, простая для понимания, чрезвычайно дружелюбная и удобная для энтузиастов Java, включая, помимо прочего, Java Basic. знания, структура коллекции Java, Java IO, параллельное программирование Java, виртуальная машина Java, корпоративная разработка Java (Git, SSM, Spring Boot) и другие основные точки знаний.
Просмотр этого репозитория означает, что вы станете лучшим программистом на Java. Вы можете щелкнуть ссылку ниже, чтобы перейти к звезде и стать свидетелем этого захватывающего момента.
Эта колонка по-прежнему входит в список GitHub Trending (ежедневный список классов Java), что позволяет второму брату наконец-то осознать радость доминирования в списке!
Меня ничто не остановит - кроме цели, даже если на берегу розы, тени и тихие гавани, я не лодка.