Guice 7.0.0 发布,Google 的 IoC 容器


Guice 7.0.0 现已发布。Guice 是 Google 开发的轻量级依赖注入框架,目标是使开发和调试更容易,更快速。具体更新内容包括:

自 Guice 5.1.0 以来的变化

JEE Jakarta Transition

Guice 7.0 仅支持jakarta.injectjakarta.servlet和 jakarta.persistence命名空间。它不支持javax.injectjavax.servletjavax.persistence。更多详情可查看: Jarkata EE blog postEclipse Foundation blog postJakarta EE Wikipedia article 以及 Oracle blog post。

Guice 6.0 与 Guice 7.0 一起发布,旨在帮助用户将他们的代码迁移到 jakarta 命名空间。Guice 6.0 继续全面支持javax.inject命名空间,同时也基本支持jakarta.inject命名空间。Guice 6.0 唯一不支持的jakarta.inject部是bind(..).toProvider方法。

Guice 6.0 的 servlet 和 persist 扩展分别只支持javax.servlet和 javax.persistence命名空间。如果需要与jakarta.servletjakarta.persistence兼容,要使用 Guice 7.0。

Guice 7.0 移除了对javax.injectjavax.servletjavax.persistence的支持。除了命名空间的变化,Guice 6.0 和 Guice 7.0 是相同的。

Details

Guice 6.0 和 Guice 7.0 除了支持的命名空间 ( javaxvs jakarta) 之外,其他都是相同的,并且是同时发布的。因此,这是一份自 5.1.0(而不是 6.0.0)而来的变更日志。

有关完整的更改列表,参阅 https://github.com/google/guice/compare/5.1.0...7.0.0 。

Guice Core

  • 添加jakarta.inject支持。(#1630、#1679、#1490、#1383)
  • 支持 Java 21(通过将 ASM 更新到 9.5 和其他更改)。(#1671、#1657、#1654)
  • 改进 Azul 等 JVM 上的 AOP 支持。(#1672)
  • 修复与递归加载即时绑定相关的死锁或崩溃。(#1633、#78、 #1389、#1394)
  • 设为PrivateModule.binder()非私有,以允许子类自定义,例如调用skipSources。(#1569、#1525)
  • 修复单例锁周期检测中的 endloop loop(可能 OOM)。(#1635、#1510)
  • 修复测试以在 Windows 上通过,尽管行分隔符不同。( #1213 )
  • 对 OSGi 元数据的改进。(#1173 #1050、#1049、#1708)
  • 将 JSR305 依赖项标记为可选(因为它在运行时不需要)。(#1172)
  • 修复Binder.requestInjection(TypeLiteral<T>, T)以使用TypeLiteral。(#1071)
  • 当具体类型由其@ProvidedBy注解提供时,尊重其范围注解 。(#251、#1319)
  • 添加一种方法来判断一个类是否被 Guice“enhanced”,并检索原始类。(#1340、#187)
  • 确保引用 JIT 绑定时,bind(...)语句的顺序无关紧要。(#700、#1650)
  • 直接在Matcher中实现Matcher.andMatcher.or作为默认方法,这样就不需要AbstractMatcher子类了。(#1716、#1177)
  • 将 error_prone_annotations 依赖项标记为可选。(#1739)

Servlet

  • 如果contextPath为空,则修复 NPE(#1656、#1655)

Persist

Persist 有许多变化,其中一些是向后不兼容的。值得注意的是:EntityManager的注入不再隐式启动工作单元(因为这导致泄漏)。用户可以通过构建带有JpaPersistOptionsJpaPersistModule,将setAutoBeginWorkOnEntityManagerCreation设置为"true",从而选择加入 legacy behavior。

  • EntityManager provisioning 不再自动启动一个工作单元。(#739、#997、#730、#985、#959、#731)
  • 忽略多个 start/stop 调用,而不是抛出异常。(#1214、#972、#598)
  • 支持手动启动 rollbacks。(#1137、#1136)
  • 不要在事务中包装对象定义的方法(例如:toString、finalize、equals、hashCode)。(#958、#788)

Struts2

Guice 7.0+ 不包含 struts2 扩展,因为 struts2 不支持jakarta.servlet命名空间。

详情可查看更新说明。


相關推薦

2023-02-09

Apache Maven 3.9.0 现已发布。Apache Maven 是一个项目管理和构建工具。基于项目对象模型(POM)的概念, Maven 可以从中心位置管理项目的构建、报告和文档。 此版本更新内容如下: Sub-task [MNG-7019] - 当配置文件丢失时也在 sta

2024-06-18

loveqq-framework 轻量级 ioc/aop 框架,比 spring 更强大的条件注解推断,打包后支持 jar index 启动。 本次更新: 正式更名为:loveqq-famework 新增:loveqq-boot-starter-mybatis 新增:loveqq-boot-starter-pagehelper 新增:loveqq-boot-starter-shiro

2023-04-18

更新方面与时俱进的能力。 CBL-Mariner 2.0.20230407 现已发布,该版本新增了许多软件包。包括:apache-commons-cli、apache-commons-lang3、apache-commons-logging、atinject、atop - promoted from extended to core、cal10n、dracut-megaraid、glassfish-servlet-api、

2022-05-23

案例,助力开发人员对新兴技术的学习和掌握。 [1]、发布背景 2021年11月8日 Spring 官方已经强烈建议使用 Spring Authorization Server 替换已经过时的 Spring Security OAuth2.0。距离 2022年5月28日,Spring Security OAuth2.0 结束生命周期还有几天

2024-05-09

​ kfyty-framework 轻量级 ioc/aop 框架,比 spring 更强大的条件注解推断,打包后支持 jar index 启动,启动速度更快 注解式 ioc/aop、自动装配、异步事件、动态代理、注解式 mvc(支持 Restful)、嵌入式 tomcat、 注解式 jdbc 框架、

2024-07-26

本次更新: 优化: loveqq-mvc,控制器全局异常切面实现从代理改为异常处理器,减少代理调用 优化:loveqq-cache,新增响应式缓存支持,默认提供 ConcurrentHashMap 实现 优化:loveqq-cache-redis,整合 redisson 响应式缓存支持

2023-09-20

何基础通讯框架(最小 0.3m 运行rpc架构) 独特的 IOC/AOP 容器设计。不会因为插件变多而启动变很慢 支持 Web、Data、Job、Remoting、Cloud 等任何开发场景 兼顾 Handler + Context 和 Listener + Message 两种架构模式 强调插件式扩展,可

2023-05-13

方便地使用 SOFA 中间件的能力。 SOFABoot v4.0.0-M2 现已发布,具体更新内容包括: New Features 支持 SOFARPC Actuator 支持 SOFAARK 添加 isle feature 启用条件配置 Optimize 为现有代码添加单元测试 更新 codecov-action@v3 并将

2023-06-28

方便地使用 SOFA 中间件的能力。 SOFABoot 4.0.0 现已发布,具体更新内容包括: 新功能 支持JDK17 更新SpringBoot 3.0.7和一些依赖 添加 art-sofa-boot-starter 支持场景配置动态bean功能 支持 SOFARPC Actuator 支持索发方舟

2022-06-13

Apache Maven 3.8.6 现已发布。Apache Maven 是一个项目管理和构建工具。基于项目对象模型(POM)的概念, Maven 可以从中心位置管理项目的构建、报告和文档。 此版本更新内容如下: Bug [MNG-7432] - [REGRESSION] Resolver 会话包含非 MavenWor

2022-10-21

进行创新。 值得一提的是,Google Open Source 官方一开始发布的的公告内容是:"谷歌向 CNCF 捐赠了用于简单快速安全的容器镜像构建的 KO 工具"。不过这篇原始贴很快就被删除,并以一个新的、稍有分寸的标题重新发布:"KO 申

2023-10-12

科技作者。最近他在文章提到,ChromeOS 现在更像是带有 Google 桌面环境的 Linux 发行版。 他说道,尽管并非所有人都知道,但 ChromeOS 实际上是一个 Linux 发行版。这个事实被有效地隐藏了。他对此的理解是:对于主流消费者来说

2023-09-08

Google 开发者在线课程 开始学习 Docker 24.0.6 现已发布,具体更新内容如下: 错误修复和功能增强 containerd storage backend:修复当内容存储中不再存在容器镜像时docker ps失败的问题。moby/moby#46095 containerd storage backend:修复当容

2023-05-07

Serverpod 是一个新一代的应用程序和 Web 服务器,专为 Flutter 和 Dart 生态构建。它允许你用 Dart 编写你的服务器端代码,自动生成你的 API,Serverpod 是开源的,可以在任何地方托管你的服务器。 Serverpod 1.1 版本使 Serverpod 更易