gpt4 book ai didi

java - 是否有可能破坏 CDI 示波器?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:17:57 26 4
gpt4 key购买 nike

我正在开发一个 Java EE 应用程序,主要是带有 JSF 管理控制台的 JAX-RS,它使用 CDI/Weld 通过 javax.enterprise.context.ApplicationScoped 进行依赖注入(inject)对象。除了小的调试问题外,CDI 在这个项目中表现出色。

现在我需要对 CDI 注入(inject)的对象生命周期进行一些非常粗粒度的控制。我需要能够:

  • 从应用程序上下文中删除注入(inject)的对象,或者
  • 销毁/删除/清除/重置/删除整个应用程序上下文,或者
  • Define my own @ScopeType and implementing Context我可以在其中提供执行上述两项任务之一的方法。

我完全意识到,如果不是反对的话,这总体上是跨越 CDI 和依赖注入(inject)的。我只想知道

  • 这有可能吗?
  • 如果是,完成工作的最简单/最简单/最快捷/最简单的方法是什么?

最佳答案

焊接引用文档 Section 2.1.2

Keep in mind that once a bean is bound to a context, it remains in that context until the context is destroyed. There is no way to manually remove a bean from a context. If you don't want the bean to sit in the session indefinitely, consider using another scope with a shorted lifespan, such as the request or conversation scope.

自定义范围示例 Porting the veiwscoped jsf annonation to cdi

如果您真的不想采用自定义作用域类型的路径。您可以使用不可移植方法,方法是使用BeanManager.getContext。方法并将此上下文类型转换到焊缝中 AbstractSharedContext访问上下文的 beansstore 或 cleanUp() 方法。

查看此线程以了解如何获得 BeanManager环境实例

关于java - 是否有可能破坏 CDI 示波器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6459449/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com