【发布时间】:2011-09-21 12:19:58
【问题描述】:
我正在开发一个 Java EE 应用程序,主要是带有 JSF 管理控制台的 JAX-RS,它使用 CDI/Weld 对 javax.enterprise.context.ApplicationScoped 对象进行依赖注入。除了一些小的调试问题,CDI 在这个项目中表现出色。
现在我需要对注入 CDI 的对象生命周期进行一些非常粗粒度的控制。我需要具备以下能力:
- 从应用程序上下文中删除注入的对象,或
- 销毁/删除/清除/重置/删除整个应用程序上下文,或
-
Define my own
@ScopeTypeand implementingContext我可以在其中提供执行上述两项任务之一的方法。
我完全清楚,这与 CDI 和依赖注入的本质相悖,如果不是反对的话。我只想知道
- 这远程可行吗?
- 如果是,完成工作的最简单/最简单/最快/最安全的方法是什么?
【问题讨论】:
-
只是好奇:如果这些对象只是全局对象,即一些静态字段怎么办。不涉及 DI。在您的特定应用程序中,您能否证明 DI 对您的应用范围对象真的很有价值?
-
这不会为这个应用程序飞行。我使用 DI 不仅仅是因为它有光泽。
-
我认为这根本不违背 DI 的原则 - 毕竟,创建 CDI 规范是为了准确解决范围生命周期的问题,并明确允许创建新范围(已授予, 在上下文中重新创建特定的 bean 不是 CDI 方式)
标签: java jakarta-ee cdi jboss-weld