【问题标题】:In Java EE 6 / CDI what is the correct way to get a reference to the enclosing scope在 Java EE 6 / CDI 中,获取对封闭范围的引用的正确方法是什么
【发布时间】:2016-02-18 20:29:37
【问题描述】:

在 Java EE(6)/CDI 中获取对封闭范围的引用的正确方法是什么? (考虑调试。)

【问题讨论】:

    标签: jakarta-ee cdi java-ee-6


    【解决方案1】:

    不完全确定您的问题是什么意思,但如果您希望访问给定范围内当前活动的上下文,您可以随时访问

    @Inject
    private BeanManager beanManager;
    
    ...
    
        beanManager.getContext(MyScopeAnnotation.class);
    

    如果你想发现当前 bean 的作用域,你可以调用

        beanManager.getBeans(MyClass.class).iterator().next().getScope();
    

    缺点是这种方法不会让您知道是否有人在注入点覆盖了范围。

    【讨论】:

    • 接受,因为它回答了问题。我以为每个 Bean 都有一个依赖上下文,但似乎只有一个全局依赖上下文。
    • Dependent 是一个特殊的作用域,它本质上意味着根本没有作用域。每当您注入一个依赖范围的 bean 时,您都会获得一个新实例,并在父 bean 被丢弃时将其处理掉。
    • 谢谢!我真正想知道的是找到一种简单的方法来找出哪个 bean 启动了导致我当前正在记录的 bean 实例化的连锁反应,这样我就不必每次都追溯我的路.我想有一个简单的方法,但我的谷歌技能失败了。
    猜你喜欢
    • 1970-01-01
    • 2011-10-15
    • 2013-10-26
    • 2019-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-08
    • 2022-09-27
    相关资源
    最近更新 更多