Статьи об использовании новых функций SpringBoot 2.2 можно найти в блоге автора.blog.yuqiyu.com
Обновление Spring Framework
SpringBoot2.2нижний слойSpring Frameworkобновление версии до5.2.
JMX отключен по умолчанию
JMX больше не включен по умолчанию. Эту функцию можно включить с помощью свойства конфигурации spring.jmx.enabled=true. Если вы используете функции IDE для управления своим приложением, вы также можете включить этот флаг.
Поддержка Java 13
Spring boot 2.2 добавляет поддержку Java 13. Также поддерживаются Java 8 и 11.
повышение производительности
используяproxyBeanMethods=falseВесенний ботинок@Configurationclass, который сокращает время запуска и использование памяти.proxyBeanMethodsда@ConfigurationНовые свойства, представленные в Spring Framework 5.2 M1.proxyBeanMethodsТакже доступен как атрибут@SpringBootApplicationа также@SpringBootConfiguration.
В использованииbootRunГрейдл илиspring-boot:runКогда Maven запускает приложение во время разработки, JVM будет настроен с флагом (-Xverify:noneа также-XX:TieredStopAtLevel=1), чтобы оптимизировать его и сократить время запуска. При работе на JDK 13-Xverify:noneНе указан, потому что он был заброшен.
В этой версии также были внесены некоторые другие улучшения производительности:
- Время, необходимое для привязки большого количества свойств конфигурации, значительно сократилось.
- Когда весенняя загрузка
PersistenceUnitСобственное сканирование сущностей Hibernate отключено, поскольку оно избыточно при полной подготовке путем сканирования сущностей JPA. - Точки внедрения в автоконфигурации были улучшены, чтобы работать только в том случае, если необходимо создать bean-компонент.
- Компоненты, связанные с конечной точкой привода, теперь создаются только в том случае, если конечная точка включена и открыта (через JMX или HTTP).
- Состояние автоматическая конфигурация кодека была улучшена таким образом, чтобы она больше не была настроена при использовании кодека
- Реестр Tomcat MBean по умолчанию отключен, что уменьшает объем памяти Tomcat примерно на 2 МБ.
ленивая инициализация
теперь черезspring.main.lazy-initializationСвойство включает глобальную ленивую инициализацию для сокращения времени запуска. Обратите внимание, что за использование этой функции взимается плата:
- Обработка HTTP-запросов может занять больше времени при любой отложенной инициализации.
- Теперь, как правило, он не будет давать сбой при запуске до более позднего времени.
Отдельные bean-компоненты могут отказаться от ленивой инициализации, аннотируя их соответствующие определения с помощью@Lazy(false). если не в состоянии@Lazy(false)отказаться от ленивой инициализации,LazyInitializationExcludeFilterВместо этого вы можете использовать Bean. Например, никогда не ставитьIntegrationFlowКомпонент настроен на ленивый, вы можете использовать следующий код:
@Bean
static LazyInitializationExcludeFilter integrationLazyInitExcludeFilter() {
return LazyInitializationExcludeFilter.forBeanTypes(IntegrationFlow.class);
}
JUnit 5
spring-boot-starter-testJUnit 5 теперь предоставляется по умолчанию. Устаревший механизм JUnit 5 включен по умолчанию для поддержки существующих тестовых классов на основе JUnit 4, чтобы вы могли перейти на JUnit 5, когда будете готовы. Также возможно смешивать тестовые классы на основе JUnit 4 и JUnit 5 в одном модуле. Это позволяет постепенно переходить на JUnit 5 по мере необходимости.
Обратите внимание, что подключаемый модуль Maven Surefire для JUnit 4 не поддерживает это.listenerАтрибуты. Если у вас есть конфигурация Maven, похожая на:
<configuration>
<properties>
<property>
<name>listener</name>
<value>com.example.CustomRunListener</value>
</property>
</properties>
</configuration>
нельзя использовать,junit-vintage-engineВместо этого вам нужно явно вернуться к JUnit 4:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
</exclusion>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
<exclusion>
<groupId>org.mockito</groupId>
<artifactId>mockito-junit-jupiter</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
Мониторинг состояния источника данных
ДолженDataSourceПоказатели здоровья содержат дополнительныйvalidationQueryПроверка свойств запроса с помощью используемого объектаDataSource. Точно так жеhelloРезультат запроса, предоставляемый свойством, был переименован вresult.
Конфигурация шаблона Freemarker
В этом выпуске изменено расширение файла шаблона по умолчанию для шаблонов Freemarker. Это приводит Spring Boot в соответствие с настройками безопасности веб-приложения по умолчанию. При обновлении переименуйте существующие шаблоны из*.ftlдля*.ftlh.
Каталог конфигурации DevTools
Предпочтительное место для глобальных настроек DevTools теперь~/.config/spring-boot. Можно использовать любой из следующих файлов:
-
spring-boot-devtools.properties -
spring-boot-devtools.yaml -
spring-boot-devtools.yml
@ConfigurationPropertiesScan
@ConfigurationPropertiesАннотированные классы теперь можно найти с помощью сканирования путей к классам вместо использования@EnableConfigurationPropertiesили@Component. Добавить к@ConfigurationPropertiesScanв ваше приложение, чтобы включить сканирование.
Сканирование свойств конфигурации включено по умолчанию в Spring Boot 2.2.0, но начиная с Spring Boot 2.2.1 вы должны выбрать с помощью
@ConfigurationPropertiesScan.
@ConstructorBinding
Свойства конфигурации теперь поддерживают привязку на основе конструктора, что позволяет выполнять привязки с@ConfigurationPropertiesАннотированные классы неизменяемы. Аннотацию можно сделать с помощью@ConfigurationPropertiesкласс или один из его конструкторов, чтобы включить привязку на основе конструктора@ConstructorBinding. Теперь можно использовать такие свойства конфигурации, как@DefaultValueи примечания@DateTimeFormat.
Устаревание в Spring Boot 2.2
- Должен
logging.fileсобственность переименована вlogging.file.name. - Должен
logging.pathсобственность переименована вlogging.file.path. -
server.connection-timeoutЭто свойство устарело, и следует использовать специфичные для сервера свойства, поскольку они ведут себя по-разному. -
server.use-forward-headersИспользование этого свойства устарелоserver.forward-headers-strategy; доserver.use-forward-headers=trueБудет использоваться собственная поддержка веб-сервера. Теперь вы можете добиться того же, используяserver.forward-headers-strategy=native. Поскольку каждый сервер имеет определенное поведение, теперь мы предоставляем альтернативу, основанную на SpringForwardedHeaderFilter:server.forward-headers-strategy=framework. Разработчики должны использовать тот вариант, который лучше всего подходит для их случая использования. -
ReactiveWebServerApplicationContext#getWebServerFactory. -
agentСвойства Maven плагин был переименован вagents. - Поддержка времени Joda устарела
java.time. -
ApplicationHealthIndicatorв пользуPingHealthIndicator, всегда вносит свой вклад. -
ConfigurationBeanFactoryMetadataсогласнаConfigurationPropertiesBean. -
ConfigurationPropertiesBindingPostProcessorсогласна@EnableConfigurationPropertiesилиregisterконструктор метода. -
ConfigurationPropertiesBindingPostProcessor.VALIDATOR_BEAN_NAMEпереехал вEnableConfigurationProperties.VALIDATOR_BEAN_NAME. -
ConfigurationPropertiesBindingPostProcessorRegistrarсогласна@EnableConfigurationProperties. -
WebTestClientBuilderCustomizerпереехал вorg.springframework.boot.test.web.reactive.server.
автор личноблог
Используйте фреймворк с открытым исходным кодомApiBootПомочь вам стать архитектором сервисов интерфейса API