Баночка Spring Boot 2.4 New Features автоматически уменьшается

Java Spring

Автоматический анализ похудения

Размер пакета JAR в окончательной конструкции проекта Spring Boot всегда подвергался критике, и все зависимые пакеты должны быть встроены в окончательный выходной исполняемый файл jar. Конечно, вы можете использовать другие подключаемые модули для разделения зависимого JAR-файла и исполняемого jar-файла, см.slot-maven-plugin, но этот метод не может уменьшить размер исходного зависимого JAR.

Spring Boot 2.4 предоставляет функцию автоматического уменьшения размера анализа JAR вывода сборки и автоматического удаления вывода сборки, когда JAR готов к запуску.empty starter dependencies

Показать результаты

Давайте создадим исполняемый jar-файл на основе Spring Boot 2.4.0 и Spring Boot 2.3.6 соответственно, а затем поговорим о том, чтоempty starter

  • использоватьstart.spring.ioСоздайте пустой проект Spring Boot,Обратите внимание, что нет необходимости вводить какие-либо зависимости
  • mvn clean install создает соответствующие исполняемые файлы jar
  • Извлеките две банки отдельно в два разных каталога.
tar -zxvf demo-2.3.6.jar -C demo-2.3.6/

tar -zxvf demo-2.4.0.jar -C demo-2.4.0/
  • Подсчитывая количество зависимых банок, 2.3.6 имеет в общей сложности 19 зависимых банок, а 2.4.0 имеет только 18 зависимых банок, отсутствует spring-boot-starter.jar
cd demo-2.3.6/BOOT-INF/lib && ll -h | wc -l
19

cd demo-2.4.0/BOOT-INF/lib && ll -h | wc -l
18

что такое пустой стартер

Как упоминалось выше, мы ввели его по умолчанию, когда создавали проект на основе start.spring.io, но этот класс будет автоматически удален в Spring Boot 2.4.empty starter dependencies jar

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter</artifactId>
    </dependency>

Давайте посмотрим, что особенного в spring-boot-stater?

  • ① Пустая банка не содержит кода
  • ② Есть ссылки на другие банки, только для импорта других банок партиями

Таким образом, этот тип jar нецелесообразен, когда он встроен в исполняемый jar, потому что зависимые jar, импортированные партиями, могут быть импортированы. В настоящее время предоставляется Spring Bootredis,amqpБольшинство стартеров являются такими jar-файлами, поэтому после сборки они будут автоматически удалены.

Индивидуальная банка для достижения автоматического похудения

  • СоздайтеMANIFEST.MFметаинформация пакета jar, добавьте строкуSpring-Boot-Jar-Type: dependencies-starterПросто
resources
     ├── META-INF
         └── MANIFEST.MF