September 30, 2020

Spring Framework v4.3.29 & v5.2.9 releases

3 min read

The Spring Framework provides a comprehensive programming and configuration model for modern Java-based enterprise applications – on any kind of deployment platform.

A key element of Spring is infrastructural support at the application level: Spring focuses on the “plumbing” of enterprise applications so that teams can focus on application-level business logic, without unnecessary ties to specific deployment environments.Spring Framework

 

Features

  • Core technologies: dependency injection, events, resources, i18n, validation, data binding, type conversion, SpEL, AOP.
  • Testing: mock objects, TestContext framework, Spring MVC Test, WebTestClient.
  • Data Access: transactions, DAO support, JDBC, ORM, Marshalling XML.
  • Spring MVC and Spring WebFlux web frameworks.
  • Integration: remoting, JMS, JCA, JMX, email, tasks, scheduling, cache.
  • Languages: Kotlin, Groovy, dynamic languages.

Changelog

v4.3.29

⭐ New Features

  • PropertiesLoaderSupport should ignore socket/connect exceptions as well #25722
  • Refine use of substring operations #25515

🐞 Bug Fixes

  • VerifyErrors when using SpEL compilation with Thymeleaf when invoking a default method defined in an interface #25713
  • SQLErrorCodesFactory.getErrorCodes(DataSource) returns empty error codes if access to transactional connection fails #25694
  • Potential integer overflow in AbstractResourceBasedMessageSource.setCacheSeconds(int) #25644
  • Lazy dependency proxy does not populate bean dependencies #25565
  • Synchronized blocks in MethodOverrides are hurting concurrency #25549
  • StaticListableBeanFactory.isSingleton() returns false for singleton beans #25525
  • MockHttpServletResponse reset() does not reset charset field #25512

📔 Documentation

  • Prevent confusion about build(boolean) method in UriComponentsBuilder #25703

v5.2.9

⭐ New Features

  • HttpHeaders.setContentDispositionFormData should ignore empty filename #25769
  • StringDecoder does not provide a way to configure the default charset #25762
  • MimeMessageHelper.addAttachment: configurable encoding of attachment filename #25755
  • Current log level not checked by LogAccessor supplier-enabled logging methods #25741
  • PropertiesLoaderSupport should ignore socket/connect exceptions as well #25717
  • Avoid repeated calls to getPathWithinApplication from UrlPathHelper.getLookupPathForRequest #25669
  • Avoid full singleton lock for DefaultSingletonBeanRegistry.getSingleton(beanName, false) #25667
  • XStreamMarshaller should avoid direct use of CompositeClassLoader which is not exported by XStream in OSGi #25662
  • Avoid LinkedList performance issues through use of ArrayDeque #25652
  • Introduce createContext() factory method in AbstractGenericContextLoader #25600
  • Declare MessagePostProcessor as a @FunctionalInterface #25571
  • Assert preconditions for MergedAnnotations.from() factory methods #25568
  • Provide access to AbstractRoutingDataSource’s resolved target DataSources #25544
  • Possible optimization in UrlResource #25531
  • Refine use of substring operations #25445
  • Cache abstraction does not log hit / miss for synchronized access #25248

🐞 Bug Fixes

  • Issue with Forwarded Header and Multiple Values #25737
  • CallMetaDataContext.reconcileParameters overwrites cursor name #25707
  • VerifyErrors when using SpEL compilation with Thymeleaf when invoking a default method defined in an interface #25706
  • SQLErrorCodesFactory.getErrorCodes(DataSource) returns empty error codes if access to transactional connection fails #25681
  • Make “org.springframework.util.unit.DataSize” class Serializable #25675
  • Joda-Time presence check fails to detect Joda-Time 2.x specifically #25655
  • Regression in SimpleThreadScope introduced in 5.2.7 #25618
  • Potential integer overflow in ExecutorConfigurationSupport.setAwaitTerminationSeconds(int) and AbstractResourceBasedMessageSource.setCacheSeconds(int) #25613
  • Remove session on 4xx response from WebSocket handshake #25608
  • spring-jdbc don’t set out parameter name from metadata for Postgresql function after issue#25399 #25588
  • FileUrlResource isWritable method returns true if URL protocol is not indicating a file #25584
  • Lazy dependency proxy does not populate bean dependencies #25562
  • Bean creation fails with StackOverflowError after upgrading from 5.1.13 to 5.2.7 #25546
  • StaticListableBeanFactory.isSingleton() returns false for singleton beans #25522
  • Standalone MockMvc ignores @RestControllerAdvice annotation attributes #25520
  • MockHttpServletResponse reset() does not reset charset field #25501
  • AnnotationTypeMappings does not filter repeatable annotations #25483
  • Wrong error message for type mismatch in jsonPath().value() #25480
  • Fix infinite loop bug in AnnotationScanner #25429
  • Overloaded @Bean method with name mismatch causes bean to be created twice (in case of ASM processing) #25263

📔 Documentation

  • Prevent confusion about build(boolean) method in UriComponentsBuilder #25604
  • Document how to specify Jackson JSON view serialization hints with @RestController and Webflux #25596
  • Inconsistent log level in @Bean javadoc and ConfigurationClassEnhancer #25590
  • Fix asciidoctor syntax for source #25539
  • Improve Javadoc for @RequestMapping#params #25482
  • Document that SimpleCacheManager requires caches to be initialized when not used as a bean #22988

🔨 Dependency Upgrades

  • Upgrade to Reactor Dysprosium-SR12 #25730