Skip to content

Upgrading org.springframework:spring-webmvc 5 to 6

Breaking5.3.39 → 6.2.19Breaking8Security25Platform4Deprecated14New235Changed348Fixed939Other479

BreakingUpgrade verdict

8 breaking changes and 4 platform requirement changes and 25 security fixes.

  • XML configurations that use the jibx-marshaller element in spring-oxm.xsd will no longer validate.
  • The pure attribute is gone from @Contract, so code using it must be updated.
  • Renames aopAvailable constants in TransactionSynchronizationUtils for better GraalVM native image support.
  • Monitoring dashboards that group RestTemplate request metrics by the client.name tag will stop seeing that tag.
Top 5 of 51 that need code or config changes

org.springframework:spring-webmvc publishes an official migration guide for version 6. It covers more than the release notes do.

Upgrading to Spring Framework 6.x ↗

Installs 9 packages in all (was 7).

Also installs io.micrometer:micrometer-commons, io.micrometer:micrometer-observation.

7 packages of its own release move with it.

Breaking8
Removes the jibx-marshaller element from spring-oxm.xsd.
jibx-marshallerspring-oxm.xsd
Removes the pure attribute from @Contract.
@Contract
Renames aopAvailable constants in TransactionSynchronizationUtils for better GraalVM native image support.
TransactionSynchronizationUtilsaopAvailable
Spring Web RestTemplate http.client.requests metrics no longer have the client.name tag.
RestTemplatehttp.client.requestsclient.name
Rejects declaring both @RequestMapping and @HttpExchange on the same element.
@RequestMapping@HttpExchange
Rejects multiple @HttpExchange declarations on the same element.
@HttpExchange
Makes the DefaultGenerationContext(DefaultGenerationContext, String) constructor protected.
DefaultGenerationContext
Changes InvocableHandlerMethod#invokeSuspendingFunction return type to Object.
InvocableHandlerMethod#invokeSuspendingFunction
Security25
Fixes CVE-2026-41838, a predictable session ID issue in the WebSocket module.
Fixes CVE-2026-41839, a privilege escalation via session fixation in WebFlux.
Fixes CVE-2026-41840, a denial of service via multipart requests in WebFlux.
Fixes CVE-2026-41841, an information disclosure via static resource cache in Spring MVC and WebFlux.
Moderate · CVSS 5.9
Fixes CVE-2026-41842, a denial of service via versioned resources in Spring MVC and WebFlux.
High · CVSS 7.5
Fixes CVE-2026-41843, a path traversal via versioned static resources in Spring MVC and WebFlux.
Moderate · CVSS 5.9
Fixes CVE-2026-41844, an open redirect in Spring MVC and WebFlux.
Moderate · CVSS 4.2
Fixes CVE-2026-41845, a cross-site scripting issue via JavaScriptUtils.
JavaScriptUtilsHigh · CVSS 7.1
Fixes CVE-2026-41846, a cross-site scripting issue via JSP form tags.
Moderate · CVSS 5.9
Fixes CVE-2026-41848, a denial of service via AntPathMatcher.
AntPathMatcher
Fixes CVE-2026-41850, an algorithmic denial of service via SpEL expressions.
Fixes CVE-2026-41851, a denial of service via an unbounded cache in SpEL.
Fixes CVE-2026-41852, arbitrary method invocation in SpEL expressions.
Fixes CVE-2026-41853, multipart request smuggling in Spring MVC and WebFlux.
Moderate · CVSS 5.3
Fixes CVE-2026-41854, a server-side request forgery via UriComponentsBuilder.
UriComponentsBuilder
Fixes CVE-2026-41855, unsafe deserialization via Jackson JMS converters.
Spring MVC and WebFlux applications are vulnerable to cache poisoning when resolving static resources.
Low · CVSS 3.1
Spring MVC and WebFlux applications are vulnerable to Denial of Service attacks when resolving static resources
Moderate · CVSS 5.3
Spring MVC and WebFlux has Server Sent Event stream corruption
Low · CVSS 2.6
Spring Framework Improper Path Limitation with Script View Templates
Moderate · CVSS 5.9
Spring Framework MVC Applications Path Traversal Vulnerability
Moderate · CVSS 5.9
Spring Framework Path Traversal vulnerability
High · CVSS 7.5
Path traversal vulnerability in functional web frameworks
High · CVSS 7.5
Spring Framework vulnerable to denial of service
High · CVSS 7.5
Spring Framework is vulnerable to security bypass via mvcRequestMatcher pattern mismatch
Critical · CVSS 9.1
Platform4
Upgrades to ASM 9.8 for early Java 25 support.
ASM
Upgrades to ASM 9.7.1 for early Java 24 support.
ASM
Adds early support for Java 23.
Adds early support for JDK 21.
Deprecated14
Adds missing @Deprecated(forRemoval = true) annotations for APIs deleted in 7.0.
@Deprecated
Deprecates methodIdentification() in CacheAspectSupport for removal.
CacheAspectSupportmethodIdentification()
Deprecates setConnectTimeout on HttpComponentsClientHttpRequestFactory.
HttpComponentsClientHttpRequestFactorysetConnectTimeout
Introduces isAutowirableConstructor(Executable, PropertyProvider) in TestConstructorUtils and deprecates the existing variants.
TestConstructorUtilsisAutowirableConstructor(Executable, PropertyProvider)
Deprecates the rowsExpected property of SqlQuery for removal.
SqlQueryrowsExpected
Deprecates and removes use of UrlPathHelper in ServletWebSocketHandlerRegistry.
UrlPathHelperServletWebSocketHandlerRegistry
Deprecates exchangeTimeout and refactors readTimeout in ReactorClientHttpRequestFactory.
ReactorClientHttpRequestFactoryexchangeTimeoutreadTimeout
Deprecates the RootBeanDefinition(ResolvableType) constructor.
RootBeanDefinition(ResolvableType)
Deprecates the obsolete ConcurrentExecutorAdapter for removal in 6.1.
ConcurrentExecutorAdapter
Deprecates HttpStatus 103 CHECKPOINT in favor of the new EARLY_HINTS.
HttpStatusCHECKPOINTEARLY_HINTS
Deprecates Base64Utils.
Base64Utils
Deprecates the application/graphql+json media type after spec changes.
application/graphql+json
Deprecates JettyWebSocketClient in favor of StandardWebSocketClient.
JettyWebSocketClientStandardWebSocketClient
Deprecates LocalVariableTableParameterNameDiscoverer completely, avoiding its exposure in native images.
LocalVariableTableParameterNameDiscoverer

Generated by DepDelta from published JVM bytecode. Not mixed with prose notes.

  • changed: class NoHandlerFoundException extends ServletException → class NoHandlerFoundException extends ServletException implements ErrorResponse
  • changed: ctor ModelAndView(String, HttpStatus) → ctor ModelAndView(String, HttpStatusCode)
  • changed: ctor ModelAndView(String, Map, HttpStatus) → ctor ModelAndView(String, Map, HttpStatusCode)
  • changed: method ModelAndView.getStatus(): HttpStatus → method ModelAndView.getStatus(): HttpStatusCode
  • changed: method ModelAndView.setStatus(HttpStatus): void → method ModelAndView.setStatus(HttpStatusCode): void
  • added: method LocaleContextResolver.resolveLocale(HttpServletRequest): Locale
  • added: method LocaleContextResolver.setLocale(HttpServletRequest, HttpServletResponse, Locale): void
  • added: method NoHandlerFoundException.getBody(): ProblemDetail
  • added: method NoHandlerFoundException.getRequestHeaders(): HttpHeaders
  • added: method NoHandlerFoundException.getStatusCode(): HttpStatusCode
  • added: method SmartView.resolveNestedViews(ViewResolver, Locale): void
  • removed: class TilesConfigurerBeanDefinitionParser extends AbstractSingleBeanDefinitionParser
  • removed: ctor TilesConfigurerBeanDefinitionParser()
  • removed: method TilesConfigurerBeanDefinitionParser.doParse(Element, ParserContext, BeanDefinitionBuilder): void
  • removed: method TilesConfigurerBeanDefinitionParser.getBeanClassName(Element): String
  • removed: method TilesConfigurerBeanDefinitionParser.resolveId(Element, AbstractBeanDefinition, ParserContext): String
  • removed: static field TilesConfigurerBeanDefinitionParser.BEAN_NAME: String
  • added: static method MvcNamespaceUtils.registerPatternParser(RuntimeBeanReference, ParserContext, Object): RuntimeBeanReference
  • removed: abstract class WebMvcConfigurerAdapter implements WebMvcConfigurer
  • removed: ctor WebMvcConfigurerAdapter()
  • removed: method ViewResolverRegistry.tiles(): UrlBasedViewResolverRegistration
  • removed: method WebMvcConfigurerAdapter.addArgumentResolvers(List): void
  • removed: method WebMvcConfigurerAdapter.addCorsMappings(CorsRegistry): void
  • removed: method WebMvcConfigurerAdapter.addFormatters(FormatterRegistry): void
  • removed: method WebMvcConfigurerAdapter.addInterceptors(InterceptorRegistry): void
  • removed: method WebMvcConfigurerAdapter.addResourceHandlers(ResourceHandlerRegistry): void
  • removed: method WebMvcConfigurerAdapter.addReturnValueHandlers(List): void
  • removed: method WebMvcConfigurerAdapter.addViewControllers(ViewControllerRegistry): void
  • removed: method WebMvcConfigurerAdapter.configureAsyncSupport(AsyncSupportConfigurer): void
  • removed: method WebMvcConfigurerAdapter.configureContentNegotiation(ContentNegotiationConfigurer): void
  • removed: method WebMvcConfigurerAdapter.configureDefaultServletHandling(DefaultServletHandlerConfigurer): void
  • removed: method WebMvcConfigurerAdapter.configureHandlerExceptionResolvers(List): void
  • removed: method WebMvcConfigurerAdapter.configureMessageConverters(List): void
  • removed: method WebMvcConfigurerAdapter.configurePathMatch(PathMatchConfigurer): void
  • removed: method WebMvcConfigurerAdapter.configureViewResolvers(ViewResolverRegistry): void
  • removed: method WebMvcConfigurerAdapter.extendHandlerExceptionResolvers(List): void
  • removed: method WebMvcConfigurerAdapter.extendMessageConverters(List): void
  • removed: method WebMvcConfigurerAdapter.getMessageCodesResolver(): MessageCodesResolver
  • removed: method WebMvcConfigurerAdapter.getValidator(): Validator
  • changed: method RedirectViewControllerRegistration.setStatusCode(HttpStatus): RedirectViewControllerRegistration → method RedirectViewControllerRegistration.setStatusCode(HttpStatusCode): RedirectViewControllerRegistration
  • changed: method ViewControllerRegistration.setStatusCode(HttpStatus): ViewControllerRegistration → method ViewControllerRegistration.setStatusCode(HttpStatusCode): ViewControllerRegistration
  • changed: method ViewControllerRegistry.addStatusController(String, HttpStatus): void → method ViewControllerRegistry.addStatusController(String, HttpStatusCode): void
  • added: method DelegatingWebMvcConfiguration.configureErrorResponseInterceptors(List): void
  • added: method PathMatchConfigurer.preferPathMatcher(): boolean
  • added: method ResourceHandlerRegistration.setEtagGenerator(Function): ResourceHandlerRegistration
  • added: method WebMvcConfigurationSupport.configureErrorResponseInterceptors(List): void
  • added: method WebMvcConfigurationSupport.getErrorResponseInterceptors(): List
  • added: method WebMvcConfigurer.addErrorResponseInterceptors(List): void
  • changed: method EntityResponse.Builder.status(HttpStatus): EntityResponse.Builder → method EntityResponse.Builder.status(HttpStatusCode): EntityResponse.Builder
  • changed: method RenderingResponse.Builder.status(HttpStatus): RenderingResponse.Builder → method RenderingResponse.Builder.status(HttpStatusCode): RenderingResponse.Builder
  • changed: method RouterFunctionDsl.status(HttpStatus): ServerResponse.BodyBuilder → method RouterFunctionDsl.status(HttpStatusCode): ServerResponse.BodyBuilder
  • changed: method ServerResponse.HeadersBuilder.build(BiFunction): ServerResponse → method ServerResponse.HeadersBuilder.build(ServerResponse.HeadersBuilder.WriteFunction): ServerResponse
  • changed: method ServerResponse.statusCode(): HttpStatus → method ServerResponse.statusCode(): HttpStatusCode
  • changed: static method ServerResponse.status(HttpStatus): ServerResponse.BodyBuilder → static method ServerResponse.status(HttpStatusCode): ServerResponse.BodyBuilder
  • added: interface ServerResponse.HeadersBuilder.WriteFunction
  • added: interface ServerResponse.StreamBuilder
  • added: method RouterFunctionDsl.resource(RequestPredicate, Resource): void
  • added: method RouterFunctionDsl.withAttribute(String, Object): void
  • added: method RouterFunctionDsl.withAttributes(Function1): void
  • added: method RouterFunctions.Builder.resource(RequestPredicate, Resource): RouterFunctions.Builder
  • added: method RouterFunctions.Builder.resource(RequestPredicate, Resource, BiConsumer): RouterFunctions.Builder
  • added: method RouterFunctions.Builder.resources(Function, BiConsumer): RouterFunctions.Builder
  • added: method RouterFunctions.Builder.resources(String, Resource, BiConsumer): RouterFunctions.Builder
  • added: method ServerRequest.bind(Class): Object
  • added: method ServerRequest.bind(Class, Consumer): Object
  • added: method ServerResponse.BodyBuilder.stream(Consumer): ServerResponse
  • added: method ServerResponse.HeadersBuilder.WriteFunction.write(HttpServletRequest, HttpServletResponse): ModelAndView
  • added: method ServerResponse.SseBuilder.send(): void
  • added: method ServerResponse.StreamBuilder.complete(): void
  • added: method ServerResponse.StreamBuilder.error(Throwable): void
  • added: method ServerResponse.StreamBuilder.flush(): void
  • added: method ServerResponse.StreamBuilder.onComplete(Runnable): ServerResponse.StreamBuilder
  • added: method ServerResponse.StreamBuilder.onError(Consumer): ServerResponse.StreamBuilder
  • added: method ServerResponse.StreamBuilder.onTimeout(Runnable): ServerResponse.StreamBuilder
  • added: method ServerResponse.StreamBuilder.write(Object): ServerResponse.StreamBuilder
  • added: method ServerResponse.StreamBuilder.write(Object, MediaType): ServerResponse.StreamBuilder
  • added: static method RouterFunctions.resource(RequestPredicate, Resource): RouterFunction
  • added: static method RouterFunctions.resource(RequestPredicate, Resource, BiConsumer): RouterFunction
  • added: static method RouterFunctions.resources(Function, BiConsumer): RouterFunction
  • added: static method RouterFunctions.resources(String, Resource, BiConsumer): RouterFunction
  • added: static method ServerResponse.from(ErrorResponse): ServerResponse
  • changed: class RouterFunctionMapping extends AbstractHandlerMapping implements InitializingBean → class RouterFunctionMapping extends AbstractHandlerMapping implements InitializingBean, MatchableHandlerMapping
  • added: method RouterFunctionMapping.match(HttpServletRequest, String): RequestMatchResult
  • removed: abstract class HandlerInterceptorAdapter implements AsyncHandlerInterceptor
  • removed: ctor HandlerInterceptorAdapter()
  • removed: ctor HandlerMappingIntrospector(ApplicationContext)
  • changed: class HandlerMappingIntrospector implements CorsConfigurationSource, ApplicationContextAware, InitializingBean → class HandlerMappingIntrospector implements CorsConfigurationSource, PreFlightRequestHandler, ApplicationContextAware, InitializingBean
  • added: method AbstractHandlerExceptionResolver.addMappedHandlerClass(Class): void
  • added: method AbstractHandlerExceptionResolver.getMappedHandlerClasses(): Class[]
  • added: method AbstractHandlerExceptionResolver.setMappedHandlerPredicate(Predicate): void
  • added: method AbstractUrlHandlerMapping.unregisterHandler(String): void
  • added: method HandlerMappingIntrospector.CachedResult.getCorsConfig(): CorsConfiguration
  • added: method HandlerMappingIntrospector.CachedResult.getHandlerMapping(): MatchableHandlerMapping
  • added: method HandlerMappingIntrospector.CachedResult.matches(HttpServletRequest): boolean
  • added: method HandlerMappingIntrospector.CachedResult.toString(): String
  • added: method HandlerMappingIntrospector.allHandlerMappingsUsePathPatternParser(): boolean
  • added: method HandlerMappingIntrospector.createCacheFilter(): Filter
  • added: method HandlerMappingIntrospector.getPatternCacheLimit(): int
  • added: method HandlerMappingIntrospector.handlePreFlight(HttpServletRequest, HttpServletResponse): void
  • added: method HandlerMappingIntrospector.resetCache(ServletRequest, HandlerMappingIntrospector.CachedResult): void
  • added: method HandlerMappingIntrospector.setCache(HttpServletRequest): HandlerMappingIntrospector.CachedResult
  • added: method HandlerMappingIntrospector.setPatternCacheLimit(int): void
  • added: method MappedInterceptor.getExcludePathPatterns(): String[]
  • added: method MappedInterceptor.getIncludePathPatterns(): String[]
  • added: static final class HandlerMappingIntrospector.CachedResult
  • added: static method HandlerMappingIntrospector.CachedResult.getResultFor(HttpServletRequest): HandlerMappingIntrospector.CachedResult
  • removed: method AbstractLocaleContextResolver.resolveLocale(HttpServletRequest): Locale
  • removed: method AbstractLocaleContextResolver.setLocale(HttpServletRequest, HttpServletResponse, Locale): void
  • removed: method AcceptHeaderLocaleResolver.getDefaultLocale(): Locale
  • removed: method AcceptHeaderLocaleResolver.setDefaultLocale(Locale): void
  • removed: method CookieLocaleResolver.getDefaultLocale(): Locale
  • removed: method CookieLocaleResolver.getDefaultTimeZone(): TimeZone
  • removed: method CookieLocaleResolver.setDefaultLocale(Locale): void
  • removed: method CookieLocaleResolver.setDefaultTimeZone(TimeZone): void
  • removed: method CookieLocaleResolver.setLocale(HttpServletRequest, HttpServletResponse, Locale): void
  • removed: method LocaleChangeInterceptor.isLanguageTagCompliant(): boolean
  • removed: method LocaleChangeInterceptor.setLanguageTagCompliant(boolean): void
  • changed: class AcceptHeaderLocaleResolver implements LocaleResolver → class AcceptHeaderLocaleResolver extends AbstractLocaleResolver
  • changed: class CookieLocaleResolver extends CookieGenerator implements LocaleContextResolver → class CookieLocaleResolver extends AbstractLocaleContextResolver
  • added: ctor CookieLocaleResolver(String)
  • added: method CookieLocaleResolver.setCookieDomain(String): void
  • added: method CookieLocaleResolver.setCookieHttpOnly(boolean): void
  • added: method CookieLocaleResolver.setCookieMaxAge(Duration): void
  • added: method CookieLocaleResolver.setCookieMaxAge(Integer): void
  • added: method CookieLocaleResolver.setCookieName(String): void
  • added: method CookieLocaleResolver.setCookiePath(String): void
  • added: method CookieLocaleResolver.setCookieSameSite(String): void
  • added: method CookieLocaleResolver.setCookieSecure(boolean): void
  • added: method CookieLocaleResolver.setDefaultLocaleFunction(Function): void
  • added: method CookieLocaleResolver.setDefaultTimeZoneFunction(Function): void
  • added: method SessionLocaleResolver.setDefaultLocaleFunction(Function): void
  • added: method SessionLocaleResolver.setDefaultTimeZoneFunction(Function): void
  • changed: method ParameterizableViewController.getStatusCode(): HttpStatus → method ParameterizableViewController.getStatusCode(): HttpStatusCode
  • changed: method ParameterizableViewController.setStatusCode(HttpStatus): void → method ParameterizableViewController.setStatusCode(HttpStatusCode): void
  • added: method RequestMappingInfo.BuilderConfiguration.getPatternParserToUse(): PathPatternParser
  • added: method RequestMappingInfo.isEmptyMapping(): boolean
  • removed: method ResponseEntityExceptionHandler.handleBindException(BindException, HttpHeaders, HttpStatus, WebRequest): ResponseEntity
  • removed: method ServletModelAttributeMethodProcessor.resolveConstructorArgument(String, Class, NativeWebRequest): Object
  • changed: abstract class ResponseEntityExceptionHandler → abstract class ResponseEntityExceptionHandler implements MessageSourceAware
  • changed: method ExceptionHandlerExceptionResolver.getExceptionHandlerMethod(HandlerMethod, Exception): ServletInvocableHandlerMethod → method ExceptionHandlerExceptionResolver.getExceptionHandlerMethod(HandlerMethod, Exception, ServletWebRequest): ServletInvocableHandlerMethod
  • changed: method ResponseEntityExceptionHandler.handleAsyncRequestTimeoutException(AsyncRequestTimeoutException, HttpHeaders, HttpStatus, WebRequest): ResponseEntity → method ResponseEntityExceptionHandler.handleAsyncRequestTimeoutException(AsyncRequestTimeoutException, HttpHeaders, HttpStatusCode, WebRequest): ResponseEntity
  • changed: method ResponseEntityExceptionHandler.handleConversionNotSupported(ConversionNotSupportedException, HttpHeaders, HttpStatus, WebRequest): ResponseEntity → method ResponseEntityExceptionHandler.handleConversionNotSupported(ConversionNotSupportedException, HttpHeaders, HttpStatusCode, WebRequest): ResponseEntity
  • changed: method ResponseEntityExceptionHandler.handleExceptionInternal(Exception, Object, HttpHeaders, HttpStatus, WebRequest): ResponseEntity → method ResponseEntityExceptionHandler.handleExceptionInternal(Exception, Object, HttpHeaders, HttpStatusCode, WebRequest): ResponseEntity
  • changed: method ResponseEntityExceptionHandler.handleHttpMediaTypeNotAcceptable(HttpMediaTypeNotAcceptableException, HttpHeaders, HttpStatus, WebRequest): ResponseEntity → method ResponseEntityExceptionHandler.handleHttpMediaTypeNotAcceptable(HttpMediaTypeNotAcceptableException, HttpHeaders, HttpStatusCode, WebRequest): ResponseEntity
  • changed: method ResponseEntityExceptionHandler.handleHttpMediaTypeNotSupported(HttpMediaTypeNotSupportedException, HttpHeaders, HttpStatus, WebRequest): ResponseEntity → method ResponseEntityExceptionHandler.handleHttpMediaTypeNotSupported(HttpMediaTypeNotSupportedException, HttpHeaders, HttpStatusCode, WebRequest): ResponseEntity
  • changed: method ResponseEntityExceptionHandler.handleHttpMessageNotReadable(HttpMessageNotReadableException, HttpHeaders, HttpStatus, WebRequest): ResponseEntity → method ResponseEntityExceptionHandler.handleHttpMessageNotReadable(HttpMessageNotReadableException, HttpHeaders, HttpStatusCode, WebRequest): ResponseEntity
  • changed: method ResponseEntityExceptionHandler.handleHttpMessageNotWritable(HttpMessageNotWritableException, HttpHeaders, HttpStatus, WebRequest): ResponseEntity → method ResponseEntityExceptionHandler.handleHttpMessageNotWritable(HttpMessageNotWritableException, HttpHeaders, HttpStatusCode, WebRequest): ResponseEntity
  • changed: method ResponseEntityExceptionHandler.handleHttpRequestMethodNotSupported(HttpRequestMethodNotSupportedException, HttpHeaders, HttpStatus, WebRequest): ResponseEntity → method ResponseEntityExceptionHandler.handleHttpRequestMethodNotSupported(HttpRequestMethodNotSupportedException, HttpHeaders, HttpStatusCode, WebRequest): ResponseEntity
  • changed: method ResponseEntityExceptionHandler.handleMethodArgumentNotValid(MethodArgumentNotValidException, HttpHeaders, HttpStatus, WebRequest): ResponseEntity → method ResponseEntityExceptionHandler.handleMethodArgumentNotValid(MethodArgumentNotValidException, HttpHeaders, HttpStatusCode, WebRequest): ResponseEntity
  • changed: method ResponseEntityExceptionHandler.handleMissingPathVariable(MissingPathVariableException, HttpHeaders, HttpStatus, WebRequest): ResponseEntity → method ResponseEntityExceptionHandler.handleMissingPathVariable(MissingPathVariableException, HttpHeaders, HttpStatusCode, WebRequest): ResponseEntity
  • changed: method ResponseEntityExceptionHandler.handleMissingServletRequestParameter(MissingServletRequestParameterException, HttpHeaders, HttpStatus, WebRequest): ResponseEntity → method ResponseEntityExceptionHandler.handleMissingServletRequestParameter(MissingServletRequestParameterException, HttpHeaders, HttpStatusCode, WebRequest): ResponseEntity
  • changed: method ResponseEntityExceptionHandler.handleMissingServletRequestPart(MissingServletRequestPartException, HttpHeaders, HttpStatus, WebRequest): ResponseEntity → method ResponseEntityExceptionHandler.handleMissingServletRequestPart(MissingServletRequestPartException, HttpHeaders, HttpStatusCode, WebRequest): ResponseEntity
  • changed: method ResponseEntityExceptionHandler.handleNoHandlerFoundException(NoHandlerFoundException, HttpHeaders, HttpStatus, WebRequest): ResponseEntity → method ResponseEntityExceptionHandler.handleNoHandlerFoundException(NoHandlerFoundException, HttpHeaders, HttpStatusCode, WebRequest): ResponseEntity
  • changed: method ResponseEntityExceptionHandler.handleServletRequestBindingException(ServletRequestBindingException, HttpHeaders, HttpStatus, WebRequest): ResponseEntity → method ResponseEntityExceptionHandler.handleServletRequestBindingException(ServletRequestBindingException, HttpHeaders, HttpStatusCode, WebRequest): ResponseEntity
  • changed: method ResponseEntityExceptionHandler.handleTypeMismatch(TypeMismatchException, HttpHeaders, HttpStatus, WebRequest): ResponseEntity → method ResponseEntityExceptionHandler.handleTypeMismatch(TypeMismatchException, HttpHeaders, HttpStatusCode, WebRequest): ResponseEntity
  • added: class ResponseEntityReturnValueHandler implements HandlerMethodReturnValueHandler
  • added: ctor AbstractMessageConverterMethodProcessor(List, ContentNegotiationManager, List, List)
  • added: ctor HttpEntityMethodProcessor(List, ContentNegotiationManager, List, List)
  • added: ctor RequestResponseBodyMethodProcessor(List, ContentNegotiationManager, List, List)
  • added: ctor ResponseBodyEmitterReturnValueHandler(List, ReactiveAdapterRegistry, TaskExecutor, ContentNegotiationManager, List, LocaleResolver)
  • added: ctor ResponseEntityReturnValueHandler(HttpEntityMethodProcessor, ResponseBodyEmitterReturnValueHandler)
  • added: enum AbstractMessageConverterMethodArgumentResolver.ConverterType
  • added: field ResponseBodyEmitter.writeLock: Lock
  • added: method AbstractMessageConverterMethodArgumentResolver.getNestedTypeIfNeeded(ResolvableType): ResolvableType
  • added: method AbstractMessageConverterMethodProcessor.invokeErrorResponseInterceptors(ProblemDetail, ErrorResponse): void
  • added: method ExceptionHandlerExceptionResolver.getErrorResponseInterceptors(): List
  • added: method ExceptionHandlerExceptionResolver.setErrorResponseInterceptors(List): void
  • added: method ExceptionHandlerExceptionResolver.shouldApplyTo(HttpServletRequest, Object): boolean
  • added: method ExtendedServletRequestDataBinder.addHeaderPredicate(Predicate): void
  • added: method ExtendedServletRequestDataBinder.createValueResolver(ServletRequest): ServletRequestDataBinder.ServletRequestValueResolver
  • added: method ExtendedServletRequestDataBinder.setHeaderPredicate(Predicate): void
  • added: method RequestMappingHandlerAdapter.getErrorResponseInterceptors(): List
  • added: method RequestMappingHandlerAdapter.setErrorResponseInterceptors(List): void
  • added: method RequestMappingHandlerMapping.createRequestMappingInfo(HttpExchange, RequestCondition): RequestMappingInfo
  • added: method RequestMappingHandlerMapping.setPatternParser(PathPatternParser): void
  • added: method ResponseBodyEmitter.send(Set): void
  • added: method ResponseEntityExceptionHandler.createProblemDetail(Exception, HttpStatusCode, String, String, Object[], WebRequest): ProblemDetail
  • added: method ResponseEntityExceptionHandler.createResponseEntity(Object, HttpHeaders, HttpStatusCode, WebRequest): ResponseEntity
  • added: method ResponseEntityExceptionHandler.getMessageSource(): MessageSource
  • added: method ResponseEntityExceptionHandler.handleAsyncRequestNotUsableException(AsyncRequestNotUsableException, WebRequest): ResponseEntity
  • added: method ResponseEntityExceptionHandler.handleErrorResponseException(ErrorResponseException, HttpHeaders, HttpStatusCode, WebRequest): ResponseEntity
  • added: method ResponseEntityExceptionHandler.handleHandlerMethodValidationException(HandlerMethodValidationException, HttpHeaders, HttpStatusCode, WebRequest): ResponseEntity
  • added: method ResponseEntityExceptionHandler.handleMaxUploadSizeExceededException(MaxUploadSizeExceededException, HttpHeaders, HttpStatusCode, WebRequest): ResponseEntity
  • added: method ResponseEntityExceptionHandler.handleMethodValidationException(MethodValidationException, HttpHeaders, HttpStatus, WebRequest): ResponseEntity
  • added: method ResponseEntityExceptionHandler.handleNoResourceFoundException(NoResourceFoundException, HttpHeaders, HttpStatusCode, WebRequest): ResponseEntity
  • added: method ResponseEntityExceptionHandler.setMessageSource(MessageSource): void
  • added: method ResponseEntityReturnValueHandler.handleReturnValue(Object, MethodParameter, ModelAndViewContainer, NativeWebRequest): void
  • added: method ResponseEntityReturnValueHandler.supportsReturnType(MethodParameter): boolean
  • added: method ServletCookieValueMethodArgumentResolver.setUrlDecode(boolean): void
  • added: method ServletModelAttributeMethodProcessor.constructAttribute(WebDataBinder, NativeWebRequest): void
  • added: static field AbstractMessageConverterMethodArgumentResolver.ConverterType.BASE: AbstractMessageConverterMethodArgumentResolver.ConverterType
  • added: static field AbstractMessageConverterMethodArgumentResolver.ConverterType.GENERIC: AbstractMessageConverterMethodArgumentResolver.ConverterType
  • added: static field AbstractMessageConverterMethodArgumentResolver.ConverterType.SMART: AbstractMessageConverterMethodArgumentResolver.ConverterType
  • added: static method AbstractMessageConverterMethodArgumentResolver.ConverterType.valueOf(String): AbstractMessageConverterMethodArgumentResolver.ConverterType
  • added: static method AbstractMessageConverterMethodArgumentResolver.ConverterType.values(): AbstractMessageConverterMethodArgumentResolver.ConverterType[]
  • removed: method DefaultHandlerExceptionResolver.handleBindException(BindException, HttpServletRequest, HttpServletResponse, Object): ModelAndView
  • added: method DefaultHandlerExceptionResolver.handleDisconnectedClientException(Exception, HttpServletRequest, HttpServletResponse, Object): ModelAndView
  • added: method DefaultHandlerExceptionResolver.handleErrorResponse(ErrorResponse, HttpServletRequest, HttpServletResponse, Object): ModelAndView
  • added: method DefaultHandlerExceptionResolver.handleHandlerMethodValidationException(HandlerMethodValidationException, HttpServletRequest, HttpServletResponse, Object): ModelAndView
  • added: method DefaultHandlerExceptionResolver.handleMethodValidationException(MethodValidationException, HttpServletRequest, HttpServletResponse, Object): ModelAndView
  • added: method DefaultHandlerExceptionResolver.handleNoResourceFoundException(NoResourceFoundException, HttpServletRequest, HttpServletResponse, Object): ModelAndView
  • added: method DefaultHandlerExceptionResolver.logException(Exception, HttpServletRequest): void
  • removed: class AppCacheManifestTransformer extends ResourceTransformerSupport
  • removed: class GzipResourceResolver extends AbstractResourceResolver
  • removed: ctor AppCacheManifestTransformer()
  • removed: ctor AppCacheManifestTransformer(String)
  • removed: ctor GzipResourceResolver()
  • removed: method AppCacheManifestTransformer.transform(HttpServletRequest, Resource, ResourceTransformerChain): Resource
  • removed: method GzipResourceResolver.resolveResourceInternal(HttpServletRequest, String, List, ResourceResolverChain): Resource
  • removed: method GzipResourceResolver.resolveUrlPathInternal(String, List, ResourceResolverChain): String
  • added: abstract class ResourceHandlerUtils
  • added: class LiteWebJarsResourceResolver extends AbstractResourceResolver
  • added: class NoResourceFoundException extends ServletException implements ErrorResponse
  • added: ctor LiteWebJarsResourceResolver()
  • added: ctor LiteWebJarsResourceResolver(WebJarVersionLocator)
  • added: ctor NoResourceFoundException(HttpMethod, String)
  • added: ctor ResourceHandlerUtils()
  • added: method CachingResourceResolver.computeKey(HttpServletRequest, String, List): String
  • added: method LiteWebJarsResourceResolver.findWebJarResourcePath(String): String
  • added: method LiteWebJarsResourceResolver.resolveResourceInternal(HttpServletRequest, String, List, ResourceResolverChain): Resource
  • added: method LiteWebJarsResourceResolver.resolveUrlPathInternal(String, List, ResourceResolverChain): String
  • added: method NoResourceFoundException.getBody(): ProblemDetail
  • added: method NoResourceFoundException.getHttpMethod(): HttpMethod
  • added: method NoResourceFoundException.getResourcePath(): String
  • added: method NoResourceFoundException.getStatusCode(): HttpStatusCode
  • added: method ResourceHttpRequestHandler.getEtagGenerator(): Function
  • added: method ResourceHttpRequestHandler.setEtagGenerator(Function): void
  • added: static method ResourceHandlerUtils.assertResourceLocation(Resource): void
  • added: static method ResourceHandlerUtils.initLocationPath(String): String
  • added: static method ResourceHandlerUtils.isInvalidPath(String): boolean
  • added: static method ResourceHandlerUtils.isResourceUnderLocation(Resource, Resource): boolean
  • added: static method ResourceHandlerUtils.normalizeInputPath(String): String
  • added: static method ResourceHandlerUtils.shouldIgnoreInputPath(String): boolean
  • removed: method WebContentGenerator.applyCacheSeconds(HttpServletResponse, int, boolean): void
  • removed: method WebContentGenerator.cacheForSeconds(HttpServletResponse, int): void
  • removed: method WebContentGenerator.cacheForSeconds(HttpServletResponse, int, boolean): void
  • removed: method WebContentGenerator.checkAndPrepare(HttpServletRequest, HttpServletResponse, boolean): void
  • removed: method WebContentGenerator.isAlwaysMustRevalidate(): boolean
  • removed: method WebContentGenerator.isUseCacheControlHeader(): boolean
  • removed: method WebContentGenerator.isUseCacheControlNoStore(): boolean
  • removed: method WebContentGenerator.isUseExpiresHeader(): boolean
  • removed: method WebContentGenerator.preventCaching(HttpServletResponse): void
  • removed: method WebContentGenerator.setAlwaysMustRevalidate(boolean): void
  • removed: method WebContentGenerator.setUseCacheControlHeader(boolean): void
  • removed: method WebContentGenerator.setUseCacheControlNoStore(boolean): void
  • removed: method WebContentGenerator.setUseExpiresHeader(boolean): void
  • removed: method DefaultRequestToViewNameTranslator.setAlwaysUseFullPath(boolean): void
  • removed: method DefaultRequestToViewNameTranslator.setRemoveSemicolonContent(boolean): void
  • removed: method DefaultRequestToViewNameTranslator.setUrlDecode(boolean): void
  • removed: method DefaultRequestToViewNameTranslator.setUrlPathHelper(UrlPathHelper): void
  • changed: method RedirectView.getHttp11StatusCode(HttpServletRequest, HttpServletResponse, String): HttpStatus → method RedirectView.getHttp11StatusCode(HttpServletRequest, HttpServletResponse, String): HttpStatusCode
  • changed: method RedirectView.setStatusCode(HttpStatus): void → method RedirectView.setStatusCode(HttpStatusCode): void
  • added: interface FragmentsRendering extends SmartView
  • added: interface FragmentsRendering.Builder
  • added: method FragmentsRendering.Builder.build(): FragmentsRendering
  • added: method FragmentsRendering.Builder.fragment(ModelAndView): FragmentsRendering.Builder
  • added: method FragmentsRendering.Builder.fragment(String): FragmentsRendering.Builder
  • added: method FragmentsRendering.Builder.fragment(String, Map): FragmentsRendering.Builder
  • added: method FragmentsRendering.Builder.fragments(Collection): FragmentsRendering.Builder
  • added: method FragmentsRendering.Builder.header(String, String[]): FragmentsRendering.Builder
  • added: method FragmentsRendering.Builder.headers(Consumer): FragmentsRendering.Builder
  • added: method FragmentsRendering.Builder.status(HttpStatusCode): FragmentsRendering.Builder
  • added: method FragmentsRendering.fragments(): Collection
  • added: method FragmentsRendering.headers(): HttpHeaders
  • added: method FragmentsRendering.status(): HttpStatusCode
  • added: static method FragmentsRendering.fragment(String): FragmentsRendering.Builder
  • added: static method FragmentsRendering.fragment(String, Map): FragmentsRendering.Builder
  • added: static method FragmentsRendering.fragments(Collection): FragmentsRendering.Builder
  • added: static method FragmentsRendering.with(Collection): FragmentsRendering.Builder
  • added: static method FragmentsRendering.with(String): FragmentsRendering.Builder
  • added: static method FragmentsRendering.with(String, Map): FragmentsRendering.Builder
  • added: method FreeMarkerView.setCharset(Charset): void
  • added: method FreeMarkerViewResolver.loadView(String, Locale): View
  • added: method FreeMarkerViewResolver.postProcessView(FreeMarkerView): void
  • removed: abstract class AbstractSpringPreparerFactory implements PreparerFactory
  • removed: class SimpleSpringPreparerFactory extends AbstractSpringPreparerFactory
  • removed: class SpringBeanPreparerFactory extends AbstractSpringPreparerFactory
  • removed: class SpringLocaleResolver extends DefaultLocaleResolver
  • removed: class SpringWildcardServletTilesApplicationContext extends ServletApplicationContext
  • removed: class TilesConfigurer implements ServletContextAware, InitializingBean, DisposableBean
  • removed: class TilesView extends AbstractUrlBasedView
  • removed: class TilesViewResolver extends UrlBasedViewResolver
  • removed: ctor AbstractSpringPreparerFactory()
  • removed: ctor SimpleSpringPreparerFactory()
  • removed: ctor SpringBeanPreparerFactory()
  • removed: ctor SpringLocaleResolver()
  • removed: ctor SpringWildcardServletTilesApplicationContext(ServletContext)
  • removed: ctor TilesConfigurer()
  • removed: ctor TilesView()
  • removed: ctor TilesViewResolver()
  • removed: field TilesConfigurer.logger: Log
  • removed: method AbstractSpringPreparerFactory.getPreparer(String, Request): ViewPreparer
  • removed: method AbstractSpringPreparerFactory.getPreparer(String, WebApplicationContext): ViewPreparer
  • removed: method SimpleSpringPreparerFactory.getPreparer(String, WebApplicationContext): ViewPreparer
  • removed: method SpringBeanPreparerFactory.getPreparer(String, WebApplicationContext): ViewPreparer
  • removed: method SpringLocaleResolver.resolveLocale(Request): Locale
  • removed: method SpringWildcardServletTilesApplicationContext.getResource(ApplicationResource, Locale): ApplicationResource
  • removed: method SpringWildcardServletTilesApplicationContext.getResource(String): ApplicationResource
  • removed: method SpringWildcardServletTilesApplicationContext.getResources(String): Collection
  • removed: method TilesConfigurer.afterPropertiesSet(): void
  • removed: method TilesConfigurer.destroy(): void
  • removed: method TilesConfigurer.setCheckRefresh(boolean): void
  • removed: method TilesConfigurer.setCompleteAutoload(boolean): void
  • removed: method TilesConfigurer.setDefinitions(String[]): void
  • removed: method TilesConfigurer.setDefinitionsFactoryClass(Class): void
  • removed: method TilesConfigurer.setPreparerFactoryClass(Class): void
  • removed: method TilesConfigurer.setServletContext(ServletContext): void
  • removed: method TilesConfigurer.setTilesInitializer(TilesInitializer): void
  • removed: method TilesConfigurer.setUseMutableTilesContainer(boolean): void
  • removed: method TilesConfigurer.setValidateDefinitions(boolean): void
  • removed: method TilesView.afterPropertiesSet(): void
  • removed: method TilesView.checkResource(Locale): boolean
  • removed: method TilesView.createTilesRequest(HttpServletRequest, HttpServletResponse): Request
  • removed: method TilesView.renderMergedOutputModel(Map, HttpServletRequest, HttpServletResponse): void
  • removed: method TilesView.setAlwaysInclude(boolean): void
  • removed: method TilesView.setExposeJstlAttributes(boolean): void
  • removed: method TilesView.setRenderer(Renderer): void
  • removed: method TilesViewResolver.buildView(String): TilesView
  • removed: method TilesViewResolver.instantiateView(): AbstractUrlBasedView
  • removed: method TilesViewResolver.requiredViewClass(): Class
  • removed: method TilesViewResolver.setAlwaysInclude(Boolean): void
  • removed: method TilesViewResolver.setRenderer(Renderer): void