Upgrading org.springframework:spring-webmvc 5 to 6
Breaking5.3.39 → 6.2.19Breaking8Security25Platform4Deprecated14New235Changed348Fixed939Other479
SecurityFixes CVE-2026-41838, a predictable session ID issue in the WebSocket module.CVE-2026-41838 ↗
BreakingUpgrade verdict
8 breaking changes and 4 platform requirement changes and 25 security fixes.
In plain terms
- 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.
Must act 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.
What you must change
Breaking8
Removes the jibx-marshaller element from spring-oxm.xsd.
jibx-marshallerspring-oxm.xsdRemoves the pure attribute from @Contract.
@ContractRenames aopAvailable constants in TransactionSynchronizationUtils for better GraalVM native image support.
TransactionSynchronizationUtilsaopAvailableSpring Web RestTemplate http.client.requests metrics no longer have the client.name tag.
RestTemplatehttp.client.requestsclient.nameRejects declaring both @RequestMapping and @HttpExchange on the same element.
@RequestMapping@HttpExchangeRejects multiple @HttpExchange declarations on the same element.
@HttpExchangeMakes the DefaultGenerationContext(DefaultGenerationContext, String) constructor protected.
DefaultGenerationContextChanges InvocableHandlerMethod#invokeSuspendingFunction return type to Object.
InvocableHandlerMethod#invokeSuspendingFunctionSecurity25
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.9Fixes CVE-2026-41842, a denial of service via versioned resources in Spring MVC and WebFlux.
High · CVSS 7.5Fixes CVE-2026-41843, a path traversal via versioned static resources in Spring MVC and WebFlux.
Moderate · CVSS 5.9Fixes CVE-2026-41844, an open redirect in Spring MVC and WebFlux.
Moderate · CVSS 4.2Fixes CVE-2026-41845, a cross-site scripting issue via JavaScriptUtils.
JavaScriptUtilsHigh · CVSS 7.1Fixes CVE-2026-41846, a cross-site scripting issue via JSP form tags.
Moderate · CVSS 5.9Fixes CVE-2026-41848, a denial of service via AntPathMatcher.
AntPathMatcherFixes 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.3Fixes CVE-2026-41854, a server-side request forgery via UriComponentsBuilder.
UriComponentsBuilderFixes 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.1Spring MVC and WebFlux applications are vulnerable to Denial of Service attacks when resolving static resources
Moderate · CVSS 5.3Spring MVC and WebFlux has Server Sent Event stream corruption
Low · CVSS 2.6Spring Framework Improper Path Limitation with Script View Templates
Moderate · CVSS 5.9Spring Framework MVC Applications Path Traversal Vulnerability
Moderate · CVSS 5.9Spring Framework Path Traversal vulnerability
High · CVSS 7.5Path traversal vulnerability in functional web frameworks
High · CVSS 7.5Spring Framework vulnerable to denial of service
High · CVSS 7.5Spring Framework is vulnerable to security bypass via mvcRequestMatcher pattern mismatch
Critical · CVSS 9.1Platform4
Upgrades to ASM 9.8 for early Java 25 support.
ASMUpgrades to ASM 9.7.1 for early Java 24 support.
ASMAdds early support for Java 23.
Adds early support for JDK 21.
Deprecations to plan for
Deprecated14
Adds missing @Deprecated(forRemoval = true) annotations for APIs deleted in 7.0.
@DeprecatedDeprecates methodIdentification() in CacheAspectSupport for removal.
CacheAspectSupportmethodIdentification()Deprecates setConnectTimeout on HttpComponentsClientHttpRequestFactory.
HttpComponentsClientHttpRequestFactorysetConnectTimeoutIntroduces isAutowirableConstructor(Executable, PropertyProvider) in TestConstructorUtils and deprecates the existing variants.
TestConstructorUtilsisAutowirableConstructor(Executable, PropertyProvider)Deprecates the rowsExpected property of SqlQuery for removal.
SqlQueryrowsExpectedDeprecates and removes use of UrlPathHelper in ServletWebSocketHandlerRegistry.
UrlPathHelperServletWebSocketHandlerRegistryDeprecates exchangeTimeout and refactors readTimeout in ReactorClientHttpRequestFactory.
ReactorClientHttpRequestFactoryexchangeTimeoutreadTimeoutDeprecates the RootBeanDefinition(ResolvableType) constructor.
RootBeanDefinition(ResolvableType)Deprecates the obsolete ConcurrentExecutorAdapter for removal in 6.1.
ConcurrentExecutorAdapterDeprecates HttpStatus 103 CHECKPOINT in favor of the new EARLY_HINTS.
HttpStatusCHECKPOINTEARLY_HINTSDeprecates Base64Utils.
Base64UtilsDeprecates the application/graphql+json media type after spec changes.
application/graphql+jsonDeprecates JettyWebSocketClient in favor of StandardWebSocketClient.
JettyWebSocketClientStandardWebSocketClientDeprecates LocalVariableTableParameterNameDiscoverer completely, avoiding its exposure in native images.
LocalVariableTableParameterNameDiscovererAPI changes
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