Spring Framework 5.0.5 和 4.3.15 同时 发布 了。
Spring Framework 5.0.5 版本是本周晚些时候将要发布的 Spring Boot 2.0.1 版本的基础,4.3.15 版本将同时被 Boot 1.5.11 收录。两个版本都做了大量 bug 修复,同时也有大量的改进。5.0.5版本也准备在最近发布的 JDK 10上运行,从而允许在 JDK 8 以及9和10中同时构建和测试框架。另外,5.0.5(4.3.15有较小程度)还包括对启动时注释自检的重大性能改进。
[ SPR-15780 ] - Precondition failed for PUT methods on ResponseEntity return types
[ SPR-16488 ] - Deadlock in SubProtocolWebSocketHandler on shutdown with Undertow
[ SPR-16489 ] - EL1072E when evaluating compiled null-safe expression
[ SPR-16521 ] - JSON with missing quote leads to hanging
[ SPR-16524 ] - [Reactor Netty] Incorrect error level logging for client bad request
[ SPR-16526 ] - StringIndexOutOfBoundsException when rewriting links in CSS resources
[ SPR-16528 ] - Spurious ERROR-level logging when using SSEEmitter
[ SPR-16529 ] - GsonHttpMessageConverter cannot be used in an SseEmitter because it closes the response stream
[ SPR-16534 ] - testBindInstantFromJavaUtilDate fails on systems in the Pacific/Auckland time zone
[ SPR-16543 ] - WebApplicationContextFacesELResolver#isReadOnly always return false
[ SPR-16544 ] - SpEL : Indexed access within an expression with null variables is no longer a SpelEvaluationException
[ SPR-16545 ] - StackOverflowError when using WebFlux multipart file data handler with Undertow
[ SPR-16546 ] - FilePart transferTo fails with java.nio.file.NoSuchFileException
[ SPR-16551 ] - HiddenHttpMethodFilter breaks HandlerFunction with BodyExtractors.toFormData
[ SPR-16555 ] - ChannelSendOperator.WriteBarrier readyToWrite has race condition
[ SPR-16556 ] - PostgresTableMetaDataProvider.isGetGeneratedKeysSimulated() does not detect Postgres 10
[ SPR-16559 ] - Missing PersistenceException cause message in refresh failure warn log
[ SPR-16564 ] - Reading annotations in ConfigurationClassParser does not fall back to ASM on Google App Engine
[ SPR-16570 ] - Inconsistent synchronization in AbstractBeanFactoryBasedTargetSource and JdbcAccessor
[ SPR-16571 ] - WebAsyncManager concurrentResult should be volatile
[ SPR-16572 ] - TransactionTemplate inherits equals()/hashCode() from DefaultTransactionDefinition
[ SPR-16577 ] - SimpleAliasRegistry registerAlias not atomic
[ SPR-16581 ] - URIEditor should not double escape classpath: URIs
[ SPR-16582 ] - RestTemplate with HttpComponentsClientHttpRequestFactory and no buffering with an interceptor throws UnsupportedOperationException
[ SPR-16584 ] - Inconsistent handling of null values through Java 8 accessors in ConcurrentReferenceHashMap
[ SPR-16591 ] - ServletHttpHandlerAdapter @WebServlet annotation attributes do not conform to servlet spec
[ SPR-16597 ] - WebFlux commitActions are called after status, headers and cookies are set
[ SPR-16599 ] - AcceptHeaderLocaleResolver chooses wrong Locale for language match
[ SPR-16606 ] - ResourceDecoder incorrectly matches to Object.class
[ SPR-16611 ] - CallMetaDataContext.reconcileParameters doesn't catch output parameters with DatabaseMetaData.procedureColumnResult type (on Postgres)
[ SPR-16620 ] - Consistent thread-safe iteration in DefaultSingletonBeanRegistry
[ SPR-16625 ] - FactoryBeanRegistrySupport atomicity issues
[ SPR-16627 ] - Address race condition within spring that causes about-to-be-created-bean exceptions
[ SPR-16630 ] - An error occurs if a blank character exists before and after the delimiter of the MIME type parameter.
[ SPR-16636 ] - WebClient retrieve() does not handle Void.class as recommended
[ SPR-16640 ] - Multipart Upload with Commons Fileupload on lazy mode downloads data on cleanup
[ SPR-16648 ] - Concurrent result may be missed due to a race condition in MockMvc
[ SPR-16650 ] - ServletUriComponentsBuilder should replace context path when X-Forwarded-Prefix is present
[ SPR-16652 ] - Annotation lookup on parameter in inner class constructor fails when using javac from JDK versions prior to 9
[ SPR-16653 ] - Cannot autowire individual constructor argument in @Nested test class
[ SPR-16660 ] - UriComponentsBuilder Forwarded header parsing can throw java.lang.NumberFormatException
[ SPR-16663 ] - NamedParameterUtils.parseSqlStatement should parse :{x} style parameter correctly
[ SPR-16669 ] - Unable to bind a null value for UUID column with PostgreSQL
[ SPR-16670 ] - JndiRmiServiceExporter fails to export service on IBM j9 JDK
[ SPR-16671 ] - SimpleMailMessage's handling of to/cc/bcc arrays is inconsistent
[ SPR-12452 ] - Spring Websockets Broker relay supporting a cluster of STOMP endpoint addresses
[ SPR-13919 ] - Add support for asserting JSON in ContentRequestMatchers, just as there is for XML
[ SPR-14694 ] - Support BufferingClientHttpRequestFactory in MockRestServiceServer
[ SPR-16050 ] - Customize PreparedStatementCreatorFactory in getPreparedStatementCreator
[ SPR-16516 ] - SSE writer does not allow customizing the charset
[ SPR-16519 ] - Headers adding ability in ACK/NACK frame
[ SPR-16520 ] - Unable to register @RestControllerAdvice Class via WebTestClient
[ SPR-16523 ] - Consistent use of Collection.toArray with zero-sized array argument
[ SPR-16535 ] - Support for ResolvableType.getType().getTypeName() on Java 8
[ SPR-16536 ] - DefaultMessageListenerContainer should interrupt worker threads when not returning on shutdown
[ SPR-16537 ] - Need ability to access URI template in WebClient metrics/tracing instrumentation
[ SPR-16539 ] - Jackson Encoder(s) ignore charset in MimeType
[ SPR-16542 ] - EncoderHttpMessageWriter never sets Content-Length
[ SPR-16548 ] - Improve docs and handling of send errors in ResponseBodyEmitter
[ SPR-16553 ] - Provide simple way to create ClientResponse
[ SPR-16558 ] - Consistent incrementer arrangement for PostgreSQL, DB2 and SAP HANA
[ SPR-16562 ] - Overloaded convenience setters on HttpHeaders
[ SPR-16567 ] - Support @ResponseStatus-annotated exceptions on WebFlux
[ SPR-16568 ] - Consider caching interface-derived BeanInfo instances in CachedIntrospectionResults
[ SPR-16587 ] - MockMvcResultMatchers.jsonPath(String).value() should have a matching method to declare the expected type
[ SPR-16588 ] - Support for SimpleEvaluationContext in SpEL
[ SPR-16589 ] - Support for grouped DeferredImportSelector
[ SPR-16596 ] - Consistent volatile access to running flag in Lifecycle implementations
[ SPR-16601 ] - CodecException: No suitable writer found for part
[ SPR-16607 ] - ThreadPoolTaskExecutor should cancel all remaining Future handles on shutdown
[ SPR-16613 ] - Allow to make FormHttpMessageConverter add the charset in the Content-Type header
[ SPR-16624 ] - Update ContentNegotiationStrategy to never return an empty List
[ SPR-16626 ] - STOMP broker relay only allows up to 15 client connections
[ SPR-16628 ] - When @DependsOn throws a NoSuchBeanDefinitionException it should include the dependent bean for clarity
[ SPR-16635 ] - Generate multipart boundary using SecureRandom
[ SPR-16667 ] - Reduce ClassUtils.forName overhead (in particular for annotation introspection purposes)
[ SPR-16675 ] - Comprehensively cache annotated methods for interfaces and superclasses
[ SPR-16677 ] - Mixed use BeanNameAutoProxyCreator and AnnotationAwareAspectJAutoProxyCreator to proxy same bean
[ SPR-16678 ] - Add cpp to mime.types as text/plain
[ SPR-15780 ] - Precondition failed for PUT methods on ResponseEntity return types
[ SPR-16409 ] - SubProtocolWebSocketHandler should not log ERROR on "No messages received after ..."
[ SPR-16414 ] - ServletServerHttpRequest.getURI() may throw a java.net.URISyntaxException
[ SPR-16415 ] - AbstractClientSockJsSession.close call does not propagate IOException from disconnect
[ SPR-16427 ] - Spurious WARNINGs when XML declared TransactionProxyFactoryBean's target bean depends on an annotation declared bean that depends on another bean
[ SPR-16435 ] - Lambda error detection might not work on JDK 9
[ SPR-16450 ] - CachingConnectionFactory - Invalid session in session cache
[ SPR-16453 ] - MockMvcRequestBuilder does not decode pathInfo
[ SPR-16458 ] - MimeType compareTo implementation is not compatible with equals
[ SPR-16461 ] - GSON converter only serialises fields of controller method return type, ignoring subclass fields of response object
[ SPR-16478 ] - SimpleJdbcCall can't access synonyms in Oracle database
[ SPR-16479 ] - Set thread interrupt flag on InterruptedException
[ SPR-16486 ] - JsonMappingException when trying to instantiate org.springframework.messaging.Message
[ SPR-16488 ] - Deadlock in SubProtocolWebSocketHandler on shutdown with Undertow
[ SPR-16489 ] - EL1072E when evaluating compiled null-safe expression
[ SPR-16495 ] - NPE in Spring-JDBC with Oracle and SimpleJdbcInsert
[ SPR-16496 ] - ExceptionHandlerExceptionResolver advice applicability check may fail against interface-based controller proxy
[ SPR-16498 ] - FormTag renders empty <div> tag
[ SPR-16506 ] - ForwardedHeaderFilter garbles query params during sendRedirect()
[ SPR-16526 ] - StringIndexOutOfBoundsException when rewriting links in CSS resources
[ SPR-16528 ] - Spurious ERROR-level logging when using SSEEmitter
[ SPR-16529 ] - GsonHttpMessageConverter cannot be used in an SseEmitter because it closes the response stream
[ SPR-16533 ] - Race condition in ConcurrentMapCache
[ SPR-16534 ] - testBindInstantFromJavaUtilDate fails on systems in the Pacific/Auckland time zone
[ SPR-16543 ] - WebApplicationContextFacesELResolver#isReadOnly always return false
[ SPR-16556 ] - PostgresTableMetaDataProvider.isGetGeneratedKeysSimulated() does not detect Postgres 10
[ SPR-16559 ] - Missing PersistenceException cause message in refresh failure warn log
[ SPR-16564 ] - Reading annotations in ConfigurationClassParser does not fall back to ASM on Google App Engine
[ SPR-16570 ] - Inconsistent synchronization in AbstractBeanFactoryBasedTargetSource and JdbcAccessor
[ SPR-16571 ] - WebAsyncManager concurrentResult should be volatile
[ SPR-16572 ] - TransactionTemplate inherits equals()/hashCode() from DefaultTransactionDefinition
[ SPR-16577 ] - SimpleAliasRegistry registerAlias not atomic
[ SPR-16581 ] - URIEditor should not double escape classpath: URIs
[ SPR-16582 ] - RestTemplate with HttpComponentsClientHttpRequestFactory and no buffering with an interceptor throws UnsupportedOperationException
[ SPR-16584 ] - Inconsistent handling of null values through Java 8 accessors in ConcurrentReferenceHashMap
[ SPR-16599 ] - AcceptHeaderLocaleResolver chooses wrong Locale for language match
[ SPR-16604 ] - DefaultResponseErrorHandler wastes the body of a response with an unknown status
[ SPR-16611 ] - CallMetaDataContext.reconcileParameters doesn't catch output parameters with DatabaseMetaData.procedureColumnResult type (on Postgres)
[ SPR-16620 ] - Consistent thread-safe iteration in DefaultSingletonBeanRegistry
[ SPR-16625 ] - FactoryBeanRegistrySupport atomicity issues
[ SPR-16627 ] - Address race condition within spring that causes about-to-be-created-bean exceptions
[ SPR-16630 ] - An error occurs if a blank character exists before and after the delimiter of the MIME type parameter.
[ SPR-16640 ] - Multipart Upload with Commons Fileupload on lazy mode downloads data on cleanup
[ SPR-16648 ] - Concurrent result may be missed due to a race condition in MockMvc
[ SPR-16650 ] - ServletUriComponentsBuilder should replace context path when X-Forwarded-Prefix is present
[ SPR-16652 ] - Annotation lookup on parameter in inner class constructor fails when using javac from JDK versions prior to 9
[ SPR-16660 ] - UriComponentsBuilder Forwarded header parsing can throw java.lang.NumberFormatException
[ SPR-16663 ] - NamedParameterUtils.parseSqlStatement should parse :{x} style parameter correctly
[ SPR-16669 ] - Unable to bind a null value for UUID column with PostgreSQL
[ SPR-16671 ] - SimpleMailMessage's handling of to/cc/bcc arrays is inconsistent
[ SPR-12452 ] - Spring Websockets Broker relay supporting a cluster of STOMP endpoint addresses
[ SPR-16439 ] - Quartz Scheduler - configurable SchedulerFactory
[ SPR-16455 ] - Avoid String concatenation for not-null assertion in BeanProperty/DirectFieldBindingResult
[ SPR-16457 ] - AcceptHeaderLocaleResolver should match country locales against supported language locales
[ SPR-16535 ] - Support for ResolvableType.getType().getTypeName() on Java 8
[ SPR-16558 ] - Consistent incrementer arrangement for PostgreSQL, DB2 and SAP HANA
[ SPR-16587 ] - MockMvcResultMatchers.jsonPath(String).value() should have a matching method to declare the expected type
[ SPR-16588 ] - Support for SimpleEvaluationContext in SpEL
[ SPR-16596 ] - Consistent volatile access to running flag in Lifecycle implementations
[ SPR-16628 ] - When @DependsOn throws a NoSuchBeanDefinitionException it should include the dependent bean for clarity
[ SPR-16635 ] - Generate multipart boundary using SecureRandom
[ SPR-16667 ] - Reduce ClassUtils.forName overhead (in particular for annotation introspection purposes)
[ SPR-16678 ] - Add cpp to mime.types as text/plain