Josh Long在Devoxx英国站:展示Bootiful Spring 6和Spring Boot 3

Spring框架6和Spring Boot 3的新特性演示总结

在Devoxx UK的演讲中,VMware的Spring开发者倡导者Josh Long通过编码演示了Spring Framework 6和Spring Boot 3的新特性。他强调了从Java 17版本开始的语言级优势。

Spring Boot 3的重要性

Long认为Spring Boot 3(2023年感恩节发布)是自2014年愚人节发布的版本1以来最重要的版本。他通过编码一个“生产级”的REST服务及其客户端展示了该版本的多个新特性。

构建工具和Java版本选择

Long使用spring initializr(start.spring.io)创建项目,指出尽管可以选择Gradle(Groovy或Kotlin)和Maven作为构建工具,但默认选项现在是Gradle与Groovy。在选择Java版本时,他强调Java 17是Spring Boot 3的最低逻辑选择,建议不要使用11或8版本,除非是为了展示错误做法。

项目初始化与依赖添加

通过initializr,Long添加了JDBC、Web、GraalVM和Spring Boot Actuator等一系列依赖。生成的zip文件在IntelliJ IDEA中打开,并使用JdbcTemplate、RowMapper和Service编写了一个服务,返回定义为Java记录的新实体。随后,他在资源文件夹中创建了SQL文件,添加了数据库模式和数据。

HTTP控制器与错误处理

在实现HTTP控制器时,Long通过添加验证和编写切面来集中处理错误,将其转化为“生产级”代码。他使用了新支持的RFC-7807(HTTP API的问题详情)来创建错误的标准化表示,返回ProblemDetail对象。通过在application.properties中设置spring.mvc.problemdetails.enabled=true启用此行为。他还指出,HttpServletRequest现在位于jakarta.servlet.http包中,这是Java社区持续努力和合作的结果。

可观察性

Long强调了可观察性的重要性,指出有两种方法:

  • 指标:统计信息,如请求数量、登录用户数量等。
  • 跟踪:对系统中单个请求的详细跟踪。

Spring 6中删除了用于跟踪的sleuth项目,现在micrometer可以同时处理跟踪和指标。为了利用这些功能,需要在项目中启用Actuator。

生产准备与容器化

Long表示,现在应用程序已经“生产就绪”,可以使用buildpacks.io将其打包为可运行容器。为了尽可能高效和小型化,他指出Java是一种高效的技术,垃圾回收和JIT保持了Java的高效性。Spring Boot 3和Spring Framework 6提供了生成GraalVM原生镜像的机制。

客户端实现与新特性

在实现客户端时,Long展示了新的@GetExchange注解,这是服务器端@GetMapping的客户端等效物。尽管最初在Spring Cloud中找到,现在它已成为Spring框架的一部分,并支持任何实现(HTTP、Reactive或RSocket)。他还介绍了新添加的GraphQL支持。

总结

Long总结道,Spring 6和Spring Boot 3是一个新的基准,无论是从Jakarta EE命名空间的角度,还是新添加的原生编译支持。

阅读 21
0 条评论