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命名空间。

详情可查看更新说明

© 版权声明
THE END
喜欢就支持一下吧
点赞0

Warning: mysqli_query(): (HY000/3): Error writing file '/tmp/MYe171cP' (Errcode: 28 - No space left on device) in /www/wwwroot/583.cn/wp-includes/class-wpdb.php on line 2345
admin的头像-五八三
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

图形验证码
取消
昵称代码图片