Spring v5.2.0.M1 Release Notes

Release Date: 2019-04-10 // about 5 years ago
  • ๐Ÿฑ โญ๏ธ New Features

    • ๐Ÿ‘ @DestinationVariable not working with RSocket support #22776
    • ๐Ÿ“‡ Consistent non-exposure of inherited annotations in AnnotationMetadata #22766
    • โœ… Introduce publishEvent() convenience method in TestContext #22765
    • โž• Add support to query if ApplicationContext is available in the TestContext framework #22756
    • ๐Ÿ‘‰ Use more efficient Reactor operators #22727
    • ๐ŸŒฒ Spring logging support enhancement #22726
    • Primary resolution against FactoryBean instances #22711
    • ๐Ÿ”ฆ Expose Jaxb2Marshaller createMarshaller() and createUnmarshaller() methods #22708
    • WebClient option with both URI template and UriBuilder #22705
    • Track when isLazyInit has been set in AbstractBeanDefinition #22694
    • Infer null-safety from type variables in Kotlin extensions when possible #22687
    • RequestCondition optimizations #22644
    • 0๏ธโƒฃ Custom WebFlux encoders/decoders are placed below defaults #22612
    • JtaTransactionManager created with the JtaTransactionManagerFactoryBean is not ready to use #22605
    • ๐ŸŒ Avoid calling other bean methods in web config #22596
    • ๐Ÿ‘ Allow usage of BeanNameGenerator in ImportBeanDefinitionRegistrars #22591
    • โž• Add public getDeclaredMethods method to ReflectionUtils #22580
    • Cache BridgeMethodResolver results #22579
    • โšก๏ธ Optimize StringUtils.cleanPath #22568
    • ๐Ÿ”ง Use less memory and try to skip more classes when processing @configuration classes #22563
    • โœจ Enhance support for java.time types in spring-web #22546
    • Migrate CacheControl to use java.time.Duration for durations #22545
    • 0๏ธโƒฃ @RequestMapping without any attributes behaves as "default endpoint" #22543
    • ๐Ÿ“‡ BeanFactory.get*ForAnnotation should take @bean metadata into account #22541
    • Revisit BeanUtils.instantiateClass to work consistently with Kotlin and Java classes #22531
    • ๐Ÿ‘‰ Use String::isEmpty instead of "".equals(arg) when arg is not null #22502
    • CorsUtils#isCorsRequest should detect same origin requests with an Origin header #22496
    • "java.lang.IllegalStateException: Only one connection receive subscriber allowed." is masking real exceptions in WebFlux. #22486
    • ๐Ÿ“ฆ Exclude jdk package in ShadowingClassLoader #22485
    • โœ… Provide support for publishing test execution life-cycle events #22477
    • ๐Ÿ”ง Clarify configuration lite support and offer an opt-in option #22461
    • CorsInterceptor should add to the first interceptor in InterceptorChain? #22459
    • SpringFactoriesLoader.instantiateFactory(โ€ฆ) should report offending class on error #22453
    • Minimise need to iterate over a class's methods #22420
    • Some very simple improvements regarding usage of ArrayList #22418
    • Extract duplicated code into a separate method #22404
    • Simplify ConcurrentReferenceHashMap #22387
    • ๐Ÿ›ฐ MappingJackson2MessageConverter doesn't check if payload assignable to target type #22386
    • WebClient filters should be deferred to the subscription time #22375
    • โž• Added configurable maxFramePayloadLength to ReactorNettyWebSocketClient #22367
    • Avoid MimeType garbage creation #22340
    • ๐Ÿ‘‰ Use AtomicInteger instead of unsafe increment on volatile fields #22278
    • 0๏ธโƒฃ DefaultCorsProcessor does not set "vary: Origin" if the request has no Cors header #22273
    • Pass filename hint to the ResourceDecoder #22267
    • ๐Ÿ›  Use Method in CglibAopProxy.fixedInterceptorMap instead of String returned from Method::toString #22258
    • โž• Add option for AbstractRequestLoggingFilter to blacklist certain headers #22244
    • Limit ref() and provider() visibility in Kotlin DSL [SPR-17648] #22177
    • ๐Ÿ‘Œ Improve message for HttpStatusCodeException with empty status text #22162
    • โž• Add a getAttribute method to the org.springframework.ui.Model interface [SPR-17613] #22145
    • โ†” Integrate Reactor debugging features in WebFlux [SPR-17573] #22105
    • โž• Add bean definition attribute for ConfigurationClassPostProcessor to skip "lite" bean detection [SPR-17412] #21945
    • MapMethodArgumentResolver precludes custom argument resolvers with Map and custom annotation [SPR-17340] #21874
    • ๐Ÿ“œ Correctly parse property name in path "map[key[foo]]" #21855
    • Bean registration with Kotlin DSL using callable reference with autowired parameters [SPR-17312] #21845
    • ๐Ÿคก MockRestServiceServer.verify() not working in a CompletableFuture [SPR-17266] #21799
    • ๐Ÿ”€ Create replacement API for handling merged annotations [SPR-17161] #21697
    • ๐Ÿ‘‰ Use parameters declared in consumes or produces condition to narrow the request mapping [SPR-17133] #21670
    • Introduce Servlet version HandlerFunction and RouterFunction [SPR-16952] #21490
    • ๐Ÿ‘ RSocket client and server support [SPR-16751] #21292
    • Incorrect return type of Kotlin suspending functions [SPR-16515] #21058
    • Let Spring show the URL mappings for @MessageMapping in startup process [SPR-16015] #20564
    • ๐Ÿ‘ Allow transaction control via Vavr Try type [SPR-15806] #20361
    • โž• Add support for Kotlin coroutines [SPR-15413] #19975
    • โœ… Publish test execution events to the test ApplicationContext [SPR-13916] #18490
    • toString for AbstractSqlParameterSource #2080
    • Open parameter autowiring utility for external use #2060
    • โž• Add Kotlin DSL for working with MockMvc #1951

    ๐Ÿฑ ๐Ÿž Bug fixes

    • ๐Ÿ”€ AnnotatedElementUtils.getMergedAnnotation does not merge deep value attributes correctly #22703
    • AnnotationUtils.findAnnotation(Method method) broken for repeatable anns #22702
    • ConcurrentModificationException when serving Servlet.fn request and Undertow #22698
    • AnnotatedElementUtils.getAllAnnotationAttributes(โ€ฆ, "javax.annotation.Nonnull") returns null #22696
    • TypeDescriptor throws NPE due to because AnnotatedElement proxy is not cloning arrays #22695
    • AnnotationUtils.isAnnotationMetaPresent(โ€ฆ) no longer considers javax.annotation.Nonnull #22685
    • getDeclaredAnnotation can't find Nullable #22663
    • AnnotationsScanner throws NPE due to because AnnotatedElement proxy is not cloning arrays #22655
    • ๐Ÿ”€ Regression in merged annotation resolution #22654
    • HierarchicalUriComponents expanding order #22447

    ๐Ÿ“” Documentation

    • โšก๏ธ Update Scheduled.java Javadoc to explicitly include cron element order #22777
    • Small typo in JavaDoc for UrlPathHelper.setUrlDecode() method #22768
    • ๐Ÿ›  Fix typo #22589
    • Annotation-based filters for component scanning find meta-annotations as well #22551
    • ๐Ÿ›  Fix javadoc for AbstractApplicationContext.registerBeanPostProcessors() #22513
    • ๐Ÿ›  Fix typo in cache abstraction chapter #22256
    • Spring webflux WebClient HttpStatus::is4xxServerError #22241
    • ๐Ÿ‘ Document @Autowired support on method parameters [SPR-16576] #21118
    • โž• Add tip clarifying that @transactional is not applicable to @BeforeClass methods #456

    โฌ†๏ธ ๐Ÿ”จ Dependency upgrades

    • โฌ†๏ธ Upgrade to ASM 7.1 #22503
    • โฌ†๏ธ Upgrade to JUnit Jupiter 5.4 #22308

    ๐Ÿฑ โค๏ธ Contributors

    ๐Ÿš€ Weโ€™d like to thank all the contributors who worked on our current release!