Quarkus 1.2.0.Final 发布 - 支持 GraalVM 19.3.1、Metrics、Cache 扩展等

距离上次 Quarkus 修复版发布已经过去一个月了,您已经习惯了我们频繁的发布,所以 1.2.0.Final 来啦。我们一直在努力带来许多令人兴奋的新功能:GraalVM 19.3.1 支持终于到位了,我们添加了一个新的 Cache 扩展来轻松缓存一切,我们为多个扩展添加了默认 Metrics,我们的 HashiCorp Vault 支持得到了极大的改进,等等……

急于迁移现有应用程序?这是 我们的 1.2.0.Final 迁移指南

想了解更多关于所有这些内容吗?让我们更详细地介绍所有这些新功能。

有什么新功能?

GraalVM 19.3.1 支持

1.2.0.Final 支持三种版本的 GraalVM

  • GraalVM 19.2.1 - JDK 8 (此版本将在 1.3 中弃用)

  • GraalVM 19.3.1 - JDK 8

  • GraalVM 19.3.1 - JDK 11 (是的,JDK 11!)

与 Red Hat 的 OpenJDK 团队和 GraalVM 团队一起,我们终于解决了在 19.3 分支中遇到的所有问题,而 19.3.1 带来了我们需要的最新修复。

最后,即使您想构建原生可执行文件,也可以开始使用 JDK 11 了。不过,GraalVM for JDK 11 仍处于技术预览阶段。

不支持 19.3.0,您需要 19.2.1 或 19.3.1。

总结一下,对于 Quarkus,您可以使用

  • JVM 模式下的 JDK 8、11、12 或 13 - JDK 14 的支持将在 1.3 中提供

  • 用于构建原生可执行文件的 JDK 8 或 11

Cache 扩展

全新的 Cache 扩展允许缓存您 CDI bean 方法的返回值。它基于 Caffeine,并带有一组注解来驱动它。

简而言之,它看起来像

@ApplicationScoped
public class CachedBean {

    @CacheResult(cacheName = "foo")
    public MyObject load(MyKey key)
        // Call expensive service here.
    }

    @CacheInvalidate(cacheName = "foo")
    public void invalidate(MyKey key) {
    }

    @CacheInvalidateAll(cacheName = "foo")
    public void invalidateAll() {
    }
}

想了解更多?我们为您准备了 指南

指标

我们正在不断改进 Quarkus 的可观测性,在完成了添加默认 Health 探针之后,我们现在正在致力于添加默认 Metrics。

在 1.2.0 中,我们为 Agroal(我们的数据库连接池)和 Hibernate ORM 添加了 Metrics。更多内容将陆续推出。

如果您正在寻找为 Quarkus 做出贡献的起点,并希望为特定扩展添加 Metrics,这将是一个很好的首次贡献!

Vault 改进

我们为 HashiCorp Vault 支持添加了几项改进

  • 现在支持 Vault Transit Secret Engine:您现在可以使用 Vault 进行“即服务加密”。您需要了解的所有信息都在 专用指南 中。

  • 已添加对多个 KV 路径的支持。

SmallRye Fault Tolerance 4.x

正如 这篇博客文章 中详细解释的,我们有一个全新的 MicroProfile Fault Tolerance 实现。

它应该比以前更快(并且我们在 1.3 版本中还有一些改进正在进行中),所以请尝试一下,如果您遇到任何问题,请反馈。

Hibernate ORM

自动关联管理已禁用

Hibernate ORM 增强功能有一个功能可以为您自动管理关联:您在一个关联端添加一个元素,它会自动添加到另一端。

这非常实用,但在某些情况下效果不佳,事情会很快变得棘手。我们决定在 Quarkus 中禁用它。

更多调优

您现在可以从 application.properties 配置以下内容

  • 物理命名策略

  • 隐式命名策略

  • 是否应引用所有标识符

有关所有 Hibernate ORM 配置属性,请参阅 我们的文档

Hibernate Validator 本地化

如果您将 Quarkus 应用程序配置为支持多种语言环境,Hibernate Validator 现在将自动从 Accept-Language 头解析要使用的语言环境,如果您在 REST 调用上下文中验证 bean 或方法。

有关更多信息,请参阅 Validation guide

ArC 中的事务观察者支持

ArC,我们的 CDI 实现,现在支持事务观察者,通常是 @Observes(during = TransactionPhase.AFTER_SUCCESS)

更多 Qute

现在,在使用 Mailer 扩展发送电子邮件时,您可以使用 Qute 模板引擎。

现在使用 UBI 作为基础镜像

我们使用 Alpine 作为 JDK 基础 Dockerfile 的基础镜像已经有一段时间了。我们现在一致使用 UBI 镜像作为 JDK 和原生 Dockerfile 的基础镜像。

等等……

  • 您现在可以覆盖每个类别的日志记录配置。

  • 我们已升级到 Hibernate Search 6.0.0 beta3。

  • 我们现在使用 mongodb-driver-sync 而不是旧的 mongo-java-driver artifact

完整更新日志

您可以在 GitHub 上获取 1.2.0.CR11.2.0.Final 的完整变更日志。

ADOPTERS.md

为了分享有关 Quarkus 用法的故事,我们在存储库的根目录中添加了一个 ADOPTERS.md 文件

如果您正在使用 Quarkus 并希望在我们的博客上接受采访或只是添加到此文件中,请与我们联系,我们很乐意效劳。

贡献者

Quarkus 现在有 215 名贡献者。非常非常感谢他们中的每一位。

特别感谢 1.2.0 版本发布中的贡献者:Akito Kidani, Alex Soto, Alexander Zimmermann, Alexey Loubyansky, Anatoly Sablin, Andreas Eberle, Andreas Paschwitz, Andrew Guibert, Andy Damevin, Arne Mejlholm, Bruno Devaux, Clement Escoffier, Damien, David M. Lloyd, David Walluck, Dennis Baerten, Emmanuel Bernard, George Gastaldi, Georgios Andrianakis, Gordon Hutchison, Grzegorz Piwowarek, Guillaume Smet, Gunnar Morling, Gwenneg Lepage, Gytis Trikleris, Harald Reinmueller, Ian Wormsbecker, Ioannis Canellos, Irena Kezic, Jaikiran Pai, Jan Martiska, Jason T. Greene, Johannes, Justin Lee, Ladislav Thon, Loïc Mathieu, Manyanda Chitimbo, Marcel Overdijk, Mark Little, Martin Kouba, Matej Novotny, Matt Berteaux, Matthias Harter, Max Rydahl Andersen, Michael J. Simons, Michal Szynkiewicz, Nayden Gochev, Pavol Loffay, Pedro Igor, Peter Palaga, Rohan Maity, Romain Quinio, Rostislav Svoboda, Sanne Grinovero, Sergey Beryozkin, Stuart Douglas, Stéphane Épardaud, Tobias, Vincent Sevel, Vinícius Ferraz Campos Florentino, x80486 and Yoann Rodière。

加入我们

我们非常重视您的反馈,所以请报告错误,提出改进建议…… 让我们一起构建伟大的东西!

如果您是 Quarkus 用户或只是好奇,请不要害羞,加入我们热情的社区