Guice 7.0.0现已发布。Guice 是 Google 开发的轻量级依赖注入框架,目标是使开发和调试更容易,更快速。具体更新内容包括:
JEE Jakarta Transition
Guice 7.0仅支持jakarta.inject
、jakarta.servlet
和jakarta.persistence
命名空间。它不支持javax.inject
、javax.servlet
和javax.persistence
。更多详情可查看:Jarkata EE blog post、Eclipse Foundation blog post、Jakarta 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.servlet
或jakarta.persistence
兼容,要使用 Guice 7.0。
Guice 7.0 移除了对javax.inject
、javax.servlet
和javax.persistence
的支持。除了命名空间的变化,Guice 6.0 和 Guice 7.0 是相同的。
Details
Guice 6.0 和 Guice 7.0 除了支持的命名空间 (javax
vsjakarta
) 之外,其他都是相同的,并且是同时发布的。因此,这是一份自 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)
以使用TypeLiteral
。(#1071) 当具体类型由其@ProvidedBy
注解提供时,尊重其范围注解。(#251、#1319) 添加一种方法来判断一个类是否被 Guice“enhanced”,并检索原始类。(#1340、#187) 确保引用 JIT 绑定时,bind(...)
语句的顺序无关紧要。(#700、#1650) 直接在Matcher
中实现Matcher.and
和Matcher.or
作为默认方法,这样就不需要AbstractMatcher
子类了。(#1716、#1177) 将 error_prone_annotations 依赖项标记为可选。(#1739) Servlet
如果contextPath
为空,则修复 NPE(#1656、#1655) Persist
Persist 有许多变化,其中一些是向后不兼容的。值得注意的是:EntityManager
的注入不再隐式启动工作单元(因为这导致泄漏)。用户可以通过构建带有JpaPersistOptions
的JpaPersistModule
,将setAutoBeginWorkOnEntityManagerCreation
设置为"true",从而选择加入 legacy behavior。
Struts2
Guice 7.0+ 不包含 struts2 扩展,因为 struts2 不支持jakarta.servlet
命名空间。
详情可查看更新说明。
关键词: