当前位置: 首页 > 知识库问答 >
问题:

如何以编程方式将Java CDI托管bean注入(静态)方法中的局部变量

王昆
2023-03-14

如何以编程方式将Java CDI 1.1托管bean注入静态方法中的局部变量?

共有3个答案

潘阳舒
2023-03-14

@BRS

import javax.enterprise.inject.spi.CDI;

...

IObject iObject = CDI.current().select(IObject.class, new NamedAnnotation("iObject")).get();

与:

import javax.enterprise.util.AnnotationLiteral;

public class NamedAnnotation extends AnnotationLiteral<Named> implements Named {

     private final String value;

     public NamedAnnotation(final String value) {
         this.value = value;
     }

     public String value() {
        return value;
    }
}
逑景铄
2023-03-14

例如,使用这个实用程序类。基本上,您需要获取BeanManager的实例,然后从中获取所需的bean(想象一下JNDI查找之类的情况)。

最新消息

您还可以使用CDI 1.1中提供的CDI实用程序类

SomeBean bean = CDI.current().select(SomeBean.class).get();

更新2

在CDI 2.0中,必须使用BeanManager类以编程方式获取bean实例。

郭乐湛
2023-03-14

要插入类C实例

javax.enterprise.inject.spi.CDI.current().select(C.class).get()

这在CDI 1.1中提供

 类似资料:
  • 问题内容: 如何以静态方法以编程方式将Java CDI 1.1+托管bean注入局部变量? 问题答案: 要注入class的实例: 在CDI 1.1+中可用

  • 在控制器中引用FactoryBean,然后。但是,对于这样一个简单的情况,我真的需要创建一个新类吗? 有一个工厂方法来构造托管bean。这个方法仍然存在显式实例化POJO的问题,因此它本身需要对它进行Spring注入。此外,这是完整的样板文件。 bean的构造非常琐碎,所以我认为Spring中有一种更简单的方法来完成它。有吗?

  • 问题内容: 我是Spring的新手,遇到了这个问题。我尝试在该方法上使用@Autowired,但没有成功,在变量上,我从Eclipse中收到错误消息“该位置不允许使用@Autowired注解”。我在xml中创建了所需的bean。 下面是代码,此方法在抽象类内。 (ps我是stackOverflow的新手,希望我正确格式化了问题:)) 问题答案: 如果有可能可以让你把和成静态属性可以通过利用注入他们

  • 我试图以编程方式查找并注入一个CDI托管bean,其中限定符包含一个类的名称(不是我想要注入的类),但是我遇到的问题是,我用来查找正确bean的代码总是返回。 我要注入的bean使用名为的自定义注释进行注释,该注释包含用作限定符的类的名称,bean还实现了名为的接口。我使用的类实现了接口。 基于我对CDI的有限了解,我认为为了以编程方式查找使用注释限定的正确bean,我需要扩展,然后我可以使用来选

  • 问题内容: 我有一个关于可变范围的问题。 例如: 现在,我创建两个线程,并为每个线程创建一个实例。 当我在每个线程中调用时,可以保证线程安全吗? 本地变量存储在哪里?每个线程的堆栈?堆空间? PS我知道在这种情况下,静态是毫无意义的。我在我们的旧代码中找到了它;我只是想确定我所知道的! 问题答案: 局部变量存储在每个线程自己的堆栈中。这意味着局部变量永远不会在线程之间共享。这也意味着所有本地原始变

  • 本文向大家介绍spring 如何将配置信息注入静态变量的方法,包括了spring 如何将配置信息注入静态变量的方法的使用技巧和注意事项,需要的朋友参考一下 我们学习过将配置信息,通过@Value()的方法注入到对象的变量。这是由于对象是由spring来托管的。那么非spring如果,我们需要在静态方法中,使用配置文件中的值,又该怎么做呢? 传统的错误作法 application.propertie