«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.