spring-framework v6.2.0-RC3¶
Spring Framework是什么?¶
Spring Framework是一个开源的Java企业级应用程序开发框架,旨在简化Java开发,提供全面的基础设施支持。它通过依赖注入(DI)和面向切面编程(AOP)等核心特性,帮助开发者构建高效、可维护的应用程序。Spring的模块化设计使得开发者可以根据需求选择合适的组件,从而实现灵活的架构。
为什么要使用Spring Framework?¶
使用Spring Framework的理由有很多。首先,它提供了强大的依赖注入功能,使得代码更加松耦合,易于测试和维护。其次,Spring的AOP支持允许开发者在不修改业务逻辑的情况下,添加横切关注点(如日志、安全等)。此外,Spring还提供了丰富的生态系统,包括Spring Boot、Spring Cloud等,极大地简化了微服务和云原生应用的开发。
入门示例¶
以下是一个简单的Spring应用程序示例,展示了如何使用Spring进行依赖注入:
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.stereotype.Component;
@Component
class HelloWorld {
public void sayHello() {
System.out.println("Hello, World!");
}
}
public class Main {
public static void main(String[] args) {
ApplicationContext context = new AnnotationConfigApplicationContext(HelloWorld.class);
HelloWorld helloWorld = context.getBean(HelloWorld.class);
helloWorld.sayHello();
}
}
Spring Framework v6.1.14版本更新了什么¶
在Spring Framework v6.1.14版本中,进行了多项重要更新和修复。以下是一些关键更新:
新特性¶
- 使用Locale.ROOT进行区域无关的、不区分大小写的比较。
- 改进了静态资源处理中的相对路径检查。
- CorsUtils.isCorsRequest在格式错误的Origin头时抛出未处理的IllegalArgumentException并返回500内部服务器错误。
- 在MethodArgumentTypeMismatchException错误消息中包含参数名称。
- 在WebClientExtensions中保留协程上下文。
Bug修复¶
- 解决了DelegatingFilterProxy导致的虚拟线程固定问题。
- 修复了KotlinDelegate.hasDefaultValue()中的潜在空指针异常。
- 解决了在使用PathPattern时RedirectView中缺少路径变量值的问题。
文档更新¶
- 更新了fallback.adoc和scheduling.adoc文档。
依赖升级¶
- 升级到Apache HttpClient 5.4和Apache HttpCore Reactive 5.3。
更新日志¶
⭐ 新特性¶
- 使用Locale.ROOT进行区域无关、不区分大小写的比较。
- 改进了静态资源处理中的相对路径检查。
- CorsUtils.isCorsRequest在格式错误的Origin头时抛出未处理的IllegalArgumentException并返回500内部服务器错误。
- 在QualifierAnnotationAutowireCandidateResolver中跳过Java注解的处理。
- 在MethodArgumentTypeMismatchException错误消息中包含参数名称。
- 在WebClientExtensions中保留协程上下文。
- 在ConcurrentReferenceHashMap中检测到阻塞调用。
- 关于bean后处理和急切注入的警告消息可能会建议错误的原因。
🐞 Bug修复¶
- 解决了DelegatingFilterProxy导致的虚拟线程固定问题。
- 修复了KotlinDelegate.hasDefaultValue()中的潜在空指针异常。
- 解决了JMS连接工厂创建的JDK代理缺少本机图像提示的问题。
- AotTestExecutionListener不应在@DisabledInAotMode测试类中被调用。
- 在spring-webflux中使用编码的资源路径而不是输入路径验证。
- org.springframework.util.ResourceUtils#toRelativeURL丢弃自定义URLStreamHandler。
- 在WebClient ExchangeFilterFunction执行期间当前观察未在范围内。
- ZoneIdEditor为TypeConverterSupport抛出错误的异常类型。
- MimeMessageHelper addInline与ByteArrayResource在文件名为null时失败。
- @Cacheable在注解代码中抛出RuntimeException时抛出NullPointerException。
- 使用PathPattern时RedirectView中缺少路径变量值。
- Reactive HttpComponentsClientHttpResponse忽略Expires cookie属性。
📔 文档¶
- 更新了fallback.adoc。
- 更新了scheduling.adoc。
- 修复了testing/support-jdbc.adoc中的链接。
- 调整了关于BeanPostProcessorChecker的Javadoc注释。
- 参考了使用AspectJ的spring-framework-petclinic仓库。
🔨 依赖升级¶
- 升级到Apache HttpClient 5.4。
- 升级到Apache HttpCore Reactive 5.3。
- 升级到Awaitility 4.2.2。
- 升级到Micrometer 1.12.11。
- 升级到Reactor 2023.0.11。