«1. Введение

В этом уроке мы рассмотрим устаревшие классы в Spring и Spring Boot и объясним, чем они были заменены.

Мы рассмотрим классы, начиная с Spring 4 и Spring Boot 1.4.

2. Устаревшие классы в Spring

Для удобства чтения мы перечисляем классы и их замены на основе выпуска Spring. И внутри каждой группы классов мы отсортировали их по имени класса, независимо от пакета.

2.1. Spring 4.0.x

    org.springframework.cache.interceptor.DefaultKeyGenerator — заменен SimpleKeyGenerator или пользовательскими реализациями KeyGenerator на основе хэш-кодов org.springframework.jdbc.support.lob.OracleLobHandler — DefaultLobHandler для Oracle 10g водитель и выше; мы должны рассматривать его даже в сравнении с базой данных Oracle 9i org.springframework.test.AssertThrows — мы должны использовать поддержку JUnit 4 @Test(expected=…) вместо org.springframework.http.converter.xml.XmlAwareFormHttpMessageConverter — – AllEncompassingFormHttpMessageConverter

Следующий класс устарел в Spring 4.0.2 в пользу стратегии по умолчанию CGLIB 3.1 и был удален в Spring 4.1:

    org.springframework.cglib.transform.impl.MemorySafeUndeclaredThrowableStrategy ~ ~~ Все устаревшие классы, а также устаревшие интерфейсы, поля, методы, конструкторы и константы перечисления для этой версии Spring можно найти на странице официальной документации.

2.2. Spring 4.1.x

org.springframework.jdbc.core.simple.ParameterizedBeanPropertyRowMapper — BeanPropertyRowMapper org.springframework.jdbc.core.simple.ParameterizedSingleColumnRowMapper — SingleColumnRowMapper

    Полный список можно найти в Spring 4.1 .x JavaDoc.

2.3. Spring 4.2.x

org.springframework.web.servlet.view.document.AbstractExcelView — AbstractXlsView и его варианты AbstractXlsxView и AbstractXlsxStreamingView org.springframework.format.number.CurrencyFormatter — CurrencyStyleFormatter org.springframework.messaging.simp .user.DefaultUserSessionRegistry — мы должны использовать SimpUserRegistry в сочетании с ApplicationListener, прослушивающим события AbstractSubProtocolEvent. org.springframework.messaging.handler.HandlerMethodSelector — обобщенный и усовершенствованный метод. выполнять прямые проверки для желаемых вариантов JDK API через отражение «Этот класс удален вместе с @TransactionConfiguration в Spring 5 org.springframewor k.oxm.xmlbeans.XmlBeansMarshaller — после прекращения использования XMLBeans в Apache

    Следующие классы объявлены устаревшими в пользу Apache Log4j 2:

org.springframework.web.util.Log4jConfigListener org.springframework.util.Log4jConfigurer org.springframework.web.filter.Log4jNestedDiagnosticContextFilter org.springframework.web.context.request.Log4jNestedDiagnosticContextInterceptor org.springframework.web.util.Log4jWebConfigurer

    Дополнительные сведения доступны в Spring 4.2.x JavaDoc.

2.4. Spring 4.3.x

Эта версия Spring содержит множество устаревших классов:

«org.springframework.web.servlet.mvc.method.annotation.AbstractJsonpResponseBodyAdvice — этот класс удален в Spring Framework 5.1; вместо этого мы должны использовать CORS org.springframework.oxm.castor.CastorMarshaller — устарел из-за отсутствия активности в проекте Castor org.springframework.web.servlet.mvc.method.annotation.CompletionStageReturnValueHandler — DeferredResultMethodReturnValueHandler, который теперь поддерживает возвращаемые значения CompletionStage через механизм адаптера – устарел в пользу прямого использования ResolvableType org.springframework.web.servlet.mvc.method.annotation.ListenableFutureReturnValueHandler – DeferredResultMethodReturnValueHandler, который теперь поддерживает возвращаемые значения ListenableFuture через механизм адаптера — мы должны использовать PostgresSequenceMaxValueIncrementer вместо org.springframework.web.servlet.ResourceServlet – ResourceHttpRequestHandler

    Эти классы устарели в пользу инфраструктуры MVC на основе HandlerMethod:

org.springframework.web.servlet.mvc.support. ControllerClassNameHandlerMapping org.springframework.web.bind.annotation.support.HandlerMethodInvoker org.springframework.web.bind.annotation.support.HandlerMethodResolver

    Некоторые классы устарели в пользу методов обработчиков, управляемых аннотациями:

org.springframework. web.servlet.mvc.support.AbstractControllerUrlHandlerMapping org.springframework.web.servlet.mvc.multiaction.AbstractUrlMethodNameResolver org.springframework.web.servlet.mvc.support.ControllerBeanNameHandlerMapping org.springframework.web.servlet.mvc.multiaction.InternalPathMethodNameResolver org. springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver org.springframework.web.servlet.mvc.multiaction.PropertiesMethodNameResolver

    Есть также много классов из Spring, которые мы должны заменить их эквивалентами Hibernate 4.x/5.x:

«org.springframework.orm.hibernate3.support.AbstractLobType org.springframework.orm.hibernate3.AbstractSessionFactoryBean org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean org.springframework.orm.hibernate3.support.BlobByteArrayType org.springframework.orm.hibernate3. support.BlobSerializableType org.springframework.orm.hibernate3.support.BlobStringType org.springframework.orm.hibernate3.support.ClobStringType org.springframework.orm.hibernate3.FilterDefinitionFactoryBean org.springframework.orm.hibernate3.HibernateAccessor org.springframework.orm.hibernate3 .support.HibernateDaoSupport org.springframework.orm.hibernate3.HibernateExceptionTranslator org.springframework.orm.jpa.vendor.HibernateJpaSessionFactoryBean org.springframework.orm.hibernate3.HibernateTemplate org.springframework.orm.hibernate3.HibernateTransactionManager org.springframework.orm.hibernate3. support.IdTransferringMergeEventListener org.springframework.orm.hibernate3.LocalDataSourceConnectionPr ovider org.springframework.orm.hibernate3.LocalJtaDataSourceConnectionProvider org.springframework.orm.hibernate3.LocalRegionFactoryProxy org.springframework.orm.hibernate3.LocalSessionFactoryBean org.springframework.orm.hibernate3.LocalTransactionManagerLookup org.springframework.orm.hibernate3.ceptor.OpenSecurity. springframework.orm.hibernate3.support.OpenSessionInViewFilter org.springframework.orm.hibernate3.support.OpenSessionInViewInterceptor org.springframework.orm.hibernate3.support.ScopedBeanInterceptor org.springframework.orm.hibernate3.SessionFactoryUtils org.springframework.orm.hibernate3.SessionHolder org .springframework.orm.hibernate3.SpringSessionContext org.springframework.orm.hibernate3.SpringTransactionFactory org.springframework.orm.hibernate3.TransactionAwareDataSourceConnectionProvider org.springframework.orm.hibernate3.TypeDefinitionBean

    Некоторые классы устарели в пользу FreeMarker:

org.springframework.web.servlet.view.velocity.Veloc ityConfigurer org.springframework.ui.velocity.VelocityEngineFactory org.springframework.ui.velocity.VelocityEngineFactoryBean org.springframework.ui.velocity.VelocityEngineUtils org.springframework.web.servlet.view.velocity.VelocityLayoutView org.springframework.web.servlet.view .velocity.VelocityLayoutViewResolver org.springframework.web.servlet.view.velocity.VelocityToolboxView org.springframework.web.servlet.view.velocity.VelocityView org.springframework.web.servlet.view.velocity.VelocityViewResolver

    Эти классы удалены в Spring Framework 5.1, и вместо этого мы должны использовать другие транспорты: , также есть пара классов без соответствующей замены:

org.springframework.core.ControlFlowFactory org.springframework.util.WeakReferenceMonitor

    Как обычно, JavaDoc Spring 4.3.x содержит полный список.

2.5. Весна 5.0.x

    «org.springframework.web.reactive.support.AbstractAnnotationConfigDispatcherHandlerInitializer — устарел в пользу AbstractReactiveWebInitializer org.springframework.web.util.AbstractUriTemplateHandler — DefaultUriBuilderFactory предпочтение простому использованию WebSocketMessageBrokerConfigurer, который имеет методы по умолчанию, что стало возможным благодаря базовой версии Java 8 CallableProcessingInterceptor имеет методы по умолчанию org.springframework.messaging.support.ChannelInterceptorAdapter — устарел, поскольку ChannelInterceptor имеет методы по умолчанию (что стало возможным благодаря базовой линии Java 8) и может быть реализован напрямую без необходимости в этом неактивном адаптере org.springframework .util.comparator.CompoundComparator — устарел в fa В отличие от стандартного JDK 8 Comparator.thenComparing(Comparator) org.springframework.web.util.DefaultUriTemplateHandler — DefaultUriBuilderFactory; следует отметить, что DefaultUriBuilderFactory имеет другое значение по умолчанию для свойства parsePath (измененное с false на true) org.springframework.web.context.request.async.DeferredResultProcessingInterceptorAdapter — поскольку DeferredResultProcessingInterceptor имеет методы по умолчанию org.springframework.util. comparator.InvertibleComparator — устарел в пользу стандартного JDK 8 Comparator.reversed() org.springframework.http.client.Netty4ClientHttpRequestFactory — устарел в пользу ReactorClientHttpConnector org.apache.commons.logging.impl.SimpleLog — перемещен в spring-jcl (фактически эквивалентен NoOpLog) org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter — WebMvcConfigurer имеет методы по умолчанию (что стало возможным благодаря базовой линии Java 8) и может быть реализован напрямую без необходимости в этом адаптер org.springframework.beans.factory.config.YamlProcessor.StrictMapAppenderConstructor — заменен собственной обработкой повторяющихся ключей SnakeYAML

У нас есть два класса, которые устарели в пользу AbstractReactiveWebInitializer:

org.springframework.web.reactive.support.AbstractDispatcherHandlerInitializer org.springframework.web.reactive.support.AbstractServletHttpHandlerAdapterInitializer

    И следующие классы не имеют замены: ~ ~~ org.springframework.http.client.support.AsyncHttpAccessor org.springframework.http.client.HttpComponentsAsyncClientHttpRequestFactory org.springframework.http.client.InterceptingAsyncClientHttpRequestFactory org.springframework.http.client.support.InterceptingAsyncHttpAccessor org.springframework.mock.http. client.MockAsyncClientHttpRequest

Полный список доступен в Spring 5.0.x JavaDoc.

    2.6. Весна 5.1.x

«org.springframework.http.client.support.BasicAuthorizationInterceptor — устарел в пользу BasicAuthenticationInterceptor, который повторно использует HttpHeaders.setBasicAuth(java.lang.String, java.lang.String) и теперь использует кодировку по умолчанию ISO-8859-1. вместо использования UTF-8, как это было раньше, org.springframework.jdbc.core.BatchUpdateUtils — больше не используется JdbcTemplate org.springframework.web.reactive.function.client.ExchangeFilterFunctions.Credentials — мы должны использовать Метод HttpHeaders.setBasicAuth(String, String) при построении запроса org.springframework.web.filter.reactive.ForwardedHeaderFilter — этот фильтр устарел в пользу использования ForwardedHeaderTransformer, который может быть объявлен как bean-компонент с именем — «forwardedHeaderTransformer» или явно зарегистрированный в WebHttpHandlerBuilder org.springframework.jdbc.core.namedparam.NamedParameterBatchUpdateUtils — больше не используется NamedParameterJdbcTemplate org.springframework.core.io.Path Ресурс — FileSystemResource.FileSystemResource(Path) org.springframework.beans.factory.annotation.RequiredAnnotationBeanPostProcessor — мы должны использовать внедрение конструктора для необходимых настроек (или пользовательскую реализацию InitializingBean) org.springframework.remoting.caucho.SimpleHessianServiceExporter — HessianServiceExporter org.springframework.remoting.httpinvoker.SimpleHttpInvokerServiceExporter – HttpInvokerServiceExporter org.springframework.remoting.support.SimpleHttpServerFactoryBean – встроенный Tomcat/Jetty/Undertow org.springframework.remoting.jaxws.SimpleHttpServerJaxWsServiceExporter устарели в пользу EncodedResourceResolver:

    org.springframework.web.reactive.resource.GzipResourceResolver org.springframework.web.servlet.resource.GzipResourceResolver

Существует несколько классов, которые устарели в пользу DefaultManagedTaskScheduler в Java EE 7:

org.springframework.scheduling.commonj.DelegatingTimerLi stener org.springframework.scheduling.commonj.ScheduledTimerListener org.springframework.scheduling.commonj.TimerManagerAccessor org.springframework.scheduling.commonj.TimerManagerFactoryBean org.springframework.scheduling.commonj.TimerManagerTaskScheduler

    И некоторые из них устарели в пользу Java DefaultManagedTaskExecutor в EE 7:

org.springframework.scheduling.commonj.DelegatingWork org.springframework.scheduling.commonj.WorkManagerTaskExecutor

    Наконец, один класс устарел без замены:

org.apache.commons.logging.LogFactoryService

    Дополнительные сведения см. в официальном JavaDoc Spring 5.1.x по устаревшим классам.

3. Устаревшие классы в Spring Boot

    Теперь давайте взглянем на устаревшие классы в Spring Boot до версии 1.4.

Здесь следует отметить, что для Spring Boot 1.4 и 1.5 большинство замещающих классов сохранили свои первоначальные имена, но были перемещены в другие пакеты. Поэтому мы используем полные имена классов в следующих двух подразделах как для устаревших, так и для замещающих классов.

    3.1. Весенняя загрузка 1.4.x

«org.springframework.boot.actuate.system.ApplicationPidFileWriter — устарел в пользу org.springframework.boot.system.ApplicationPidFileWriter org.springframework.boot.yaml.ArrayDocumentMatcher — устарел в пользу точного сопоставления на основе строк org. springframework.boot.test.ConfigFileApplicationContextInitializer — org.springframework.boot.test.context.ConfigFileApplicationContextInitializer org.springframework.boot.yaml.DefaultProfileDocumentMatcher — больше не используется org.springframework.boot.context.embedded.DelegatingFilterProxyRegistrationBean — – org.springframework.boot.web.servlet.DelegatingFilterProxyRegistrationBean org.springframework.boot.actuate.system.EmbeddedServerPortFileWriter – org.springframework.boot.system.EmbeddedServerPortFileWriter org.springframework.boot.test.EnvironmentTestUtils – org. springframework.boot.test.util.EnvironmentTestUtils org.springframework.boot.context.embedded.ErrorPage — org.springframework.boot.web.servlet.ErrorPage или rg.springframework.boot.context.web.ErrorPageFilter — org.springframework.boot.web.support.ErrorPageFilter org.springframework.boot.context.embedded.FilterRegistrationBean — org.springframework.boot.web.servlet.FilterRegistrationBean org.springframework.boot.test.IntegrationTestPropertiesListener — больше не используется @IntegrationTest. boot.context.web.OrderedCharacterEncodingFilter – org.springframework.boot.web.filter.OrderedCharacterEncodingFilter org.springframework.boot.context.web.OrderedHiddenHttpMethodFilter – org.springframework.boot.web.filter.OrderedHiddenHiddenHttpMethodFilterframework org.spring boot.context.web.OrderedHttpPutFormContentFilter — org.springframework.boot.web.filter.OrderedHttpPutFormContentFilter org.springframework.boot.context.web.OrderedRequestContextFilter — org.springframework.boot.web.filte r.OrderedRequestContextFilter org.springframework.boot.test.OutputCapture — org.springframework.boot.test.rule.OutputCapture org.springframework.boot.context.web.ServerPortInfoApplicationContextInitializer — org.springframework.boot.context.embedded. ServerPortInfoApplicationContextInitializer org.springframework.boot.context.web.ServletContextApplicationContextInitializer — org.springframework.boot.web.support.ServletContextApplicationContextInitializer org.springframework.boot.context.embedded.ServletListenerRegistrationBean — org.springframework.boot.web.servlet. ServletListenerRegistrationBean org.springframework.boot.context.embedded.ServletRegistrationBean — org.springframework.boot.web.servlet.ServletRegistrationBean org.springframework.boot.test.SpringApplicationContextLoader — устарел в пользу @SpringBootTest; при необходимости мы также можем использовать org.springframework.boot.test.context.SpringBootContextLoader org.springframework.boot.test.SpringBootMockServletContext — org.springframework.boot.test.mock.web.SpringBootMockServletContext org.springframework.boot. context.web.SpringBootServletInitializer – org.springframework.boot.web.support.SpringBootServletInitializer org.springframework.boot.test.TestRestTemplate – org.springframework.boot.test.web.client.TestRestTemplate

Поскольку поддержка Velocity устарел в Spring Framework 4.3, следующие классы также устарели в Spring Boot:

«org.springframework.boot.web.servlet.view.velocity.EmbeddedVelocityViewResolver org.springframework.boot.autoconfigure.velocity.VelocityAutoConfiguration org.springframework.boot.autoconfigure.velocity.VelocityAutoConfiguration.VelocityConfiguration .VelocityNonWebConfiguration org.springframework.boot.autoconfigure.velocity.VelocityAutoConfiguration.VelocityWebConfiguration org.springframework.boot.autoconfigure.velocity.VelocityProperties org.springframework.boot.autoconfigure.velocity.VelocityTemplateAvailabilityProvider

Spring Boot 1.4.x JavaDoc имеет полный список.

3.2. Spring Boot 1.5.x

    org.springframework.boot.context.event.ApplicationStartedEvent — устарело в пользу org.springframework.boot.context.event.ApplicationStartingEvent org.springframework.boot.autoconfigure.EnableAutoConfigurationImportSelector — устарело в пользу org.springframework.boot.autoconfigure.AutoConfigurationImportSelector org.springframework.boot.actuate.cache.GuavaCacheStatisticsProvider — после удаления поддержки Guava в Spring Framework 5 org.springframework.boot.loader.tools.Layouts.Module — – устарело в пользу пользовательского LayoutFactory org.springframework.boot.autoconfigure.MessageSourceAutoConfiguration – устарело в пользу org.springframework.boot.autoconfigure.context.MessageSourceAutoConfiguration пользу org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration org.springframework.boot.actuate.autoconfigure.Shel lProperties — устарели, поскольку CRaSH активно не поддерживается

Эти два класса устарели, поскольку CRaSH активно не поддерживается:

    org.springframework.boot.actuate.autoconfigure.CrshAutoConfiguration org.springframework.boot.actuate.autoconfigure. CrshAutoConfiguration.AuthenticationManagerAdapterConfiguration

Также есть несколько классов без замены:

org.springframework.boot.autoconfigure.cache.CacheProperties.Hazelcast org.springframework.boot.autoconfigure.jdbc.metadata.CommonsDbcpDataSourcePoolMetadata org.springframework.boot. autoconfigure.mustache.MustacheCompilerFactoryBean

    Чтобы увидеть весь список того, что устарело, мы можем обратиться к официальному сайту Spring Boot 1.5.x JavaDoc.

3.3. Spring Boot 2.0.x

    org.springframework.boot.test.util.EnvironmentTestUtils — устарел в пользу TestPropertyValues ​​org.springframework.boot.actuate.metrics.web.reactive.server.RouterFunctionMetrics — устарел в пользу автоматически настроенного MetricsWebFilter

И один класс не имеет замены:

    org.springframework.boot.actuate.autoconfigure.couchbase.CouchbaseHealthIndicatorProperties

Пожалуйста, ознакомьтесь со списком устаревших для Spring Boot 2.0.x Больше подробностей.

3.4. Spring Boot 2.1.x

    org.springframework.boot.actuate.health.CompositeHealthIndicatorFactory — устарел в пользу CompositeHealthIndicator.CompositeHealthIndicator(HealthAggregator, HealthIndicatorRegistry) org.springframework.boot.actuate.health.CompositeReactiveHealthIndicatorFactory — устарел в пользу CompositeReactiveHealthIndicator.CompositeReactiveHealthIndicator(HealthAggregator, ReactiveHealthIndicatorRegistry)

Наконец, мы можем ознакомиться с полным списком устаревших классов и интерфейсов в Spring Boot 2.1.x.

    4. Заключение

В этом руководстве мы рассмотрели устаревшие классы в Spring, начиная с версии 4, и Spring Boot, начиная с версии 1.4, а также их соответствующие замены, если они доступны.

«

  • org.springframework.boot.actuate.health.CompositeHealthIndicatorFactory   deprecated in favor of CompositeHealthIndicator.CompositeHealthIndicator(HealthAggregator, HealthIndicatorRegistry)
  • org.springframework.boot.actuate.health.CompositeReactiveHealthIndicatorFactory   deprecated in favor of CompositeReactiveHealthIndicator.CompositeReactiveHealthIndicator(HealthAggregator, ReactiveHealthIndicatorRegistry)

Finally, we can consult the complete list of deprecated classes and interfaces in Spring Boot 2.1.x.

4. Conclusion

In this tutorial, we explored deprecated classes in Spring since version 4 and Spring Boot from version 1.4, along with their corresponding replacements, where available.