跳转至

spring-framework v6.1.14

Spring Framework是什么

Spring Framework是一个开源的Java应用程序框架,旨在简化企业级应用程序的开发。它提供了全面的基础设施支持,使开发者能够专注于业务逻辑,而不必担心底层的复杂性。Spring的核心特性包括依赖注入、面向切面编程和事务管理等,这些特性使得开发者能够构建高效、可维护和可扩展的应用程序。

为什么要使用Spring Framework?

使用Spring Framework的理由有很多。首先,它提供了强大的依赖注入功能,能够有效管理对象之间的关系,减少代码耦合。其次,Spring的模块化设计允许开发者根据需要选择和组合不同的功能模块,从而提高开发效率。此外,Spring还支持多种数据访问技术,如JDBC、Hibernate和JPA,使得数据库操作更加简便。最后,Spring的社区活跃,文档丰富,能够为开发者提供良好的支持。

入门示例

以下是一个简单的Spring应用程序示例,展示了如何使用Spring进行依赖注入:

import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

@Configuration
public class AppConfig {
    @Bean
    public MessageService messageService() {
        return new EmailService();
    }

    @Bean
    public UserController userController() {
        return new UserController(messageService());
    }
}

public class UserController {
    private final MessageService messageService;

    public UserController(MessageService messageService) {
        this.messageService = messageService;
    }

    public void sendMessage(String message) {
        messageService.sendMessage(message);
    }
}

public class Main {
    public static void main(String[] args) {
        ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
        UserController userController = context.getBean(UserController.class);
        userController.sendMessage("Hello, Spring!");
    }
}

Spring Framework v6.1.14版本更新了什么

在Spring Framework v6.1.14版本中,进行了多项重要更新和修复,以下是一些主要内容:

新特性

  • 使用Locale.ROOT进行区域中立、大小写不敏感的比较。
  • 改进了静态资源处理中的相对路径检查。
  • CorsUtils.isCorsRequest在格式错误的Origin头时抛出未处理的IllegalArgumentException并返回500内部服务器错误。
  • 跳过QualifierAnnotationAutowireCandidateResolver中的Java注解处理。
  • 在MethodArgumentTypeMismatchException错误消息中包含参数名称。
  • 在WebClientExtensions中保留协程上下文。
  • 在ConcurrentReferenceHashMap中检测到阻塞调用。
  • 关于bean后处理和急切注入的警告消息可能会建议错误的原因。

Bug修复

  • DelegatingFilterProxy导致固定虚拟线程的问题。
  • MethodParameter.getMethod()检查中可能出现的NPE。
  • JMS连接工厂创建的JDK代理缺少本机图像提示。
  • AotTestExecutionListener不应在@DisabledInAotMode测试类中被调用。
  • 在spring-webflux中使用编码的资源路径而不是输入路径验证。

文档更新

  • 更新了fallback.adoc和scheduling.adoc文档。
  • 修复了testing/support-jdbc.adoc中的链接。

依赖升级

  • 升级到Apache HttpClient 5.4。
  • 升级到Apache HttpCore Reactive 5.3。
  • 升级到Awaitility 4.2.2。
  • 升级到Micrometer 1.12.11。
  • 升级到Reactor 2023.0.11。

更新日志

⭐ 新特性

  • 使用Locale.ROOT进行区域中立、大小写不敏感的比较。
  • 改进了静态资源处理中的相对路径检查。
  • CorsUtils.isCorsRequest在格式错误的Origin头时抛出未处理的IllegalArgumentException并返回500内部服务器错误。
  • 跳过QualifierAnnotationAutowireCandidateResolver中的Java注解处理。
  • 在MethodArgumentTypeMismatchException错误消息中包含参数名称。
  • 在WebClientExtensions中保留协程上下文。
  • 在ConcurrentReferenceHashMap中检测到阻塞调用。
  • 关于bean后处理和急切注入的警告消息可能会建议错误的原因。

🐞 Bug修复

  • DelegatingFilterProxy导致固定虚拟线程的问题。
  • MethodParameter.getMethod()检查中可能出现的NPE。
  • 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中缺少路径变量值。
  • 响应式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。