【问题标题】:CDI and HK2 Not working togetherCDI 和 HK2 不合作
【发布时间】:2014-08-21 21:45:17
【问题描述】:

我不确定我是否理解这两个如何使用@Inject 进行注入的确切方式,但我最近开发了一个应用程序,在开发的第一阶段我使用 HK2 的 @inject 使用依赖注入并绑定资源使用抽象活页夹,效果很好。然后我想再注入一个价值。我需要使用@Inject 注入一个基本的字符串值,并且这个值是从一个用@Produces 注释的方法中获得的。但是当我这样做时,我得到了这个错误。

org.glassfish.hk2.api.UnsatisfiedDependencyException: There was no object available for injection at Injectee(requiredType=String

我在很多地方读到过,很多人认为 CDI 和 HK2 在合作时遇到了一些问题。我无法解决问题。

当我在两个不同的独立程序中尝试上述方案时,它们运行良好。但是当我将它们集成时,我收到上述错误消息。

这是我在 java 的 jira 中找到的: https://java.net/jira/browse/GLASSFISH-20597

我的例子是:

public ClassA{
  @Inject
      ClassBInter b;
  }

我在抽象绑定器中绑定了类b

new AbstractBinder(){
        @Override
        protected void configure() {
            //Binding the implementation to the interface
            bind(ClassBImpl.class).to(ClassBInter.class);
          }
   }

这很好。

但是当我尝试在同一系统中将@Inject 添加到字符串的以下概念时,它会因上述异常而崩溃

  public ClassC{

         @Inject
         String name;
   }

生产者类

    public ProducerClass{

      @Produces
      public String getName(){
            return "henry Ford";
       }
     }

【问题讨论】:

  • 您使用的是哪个版本的 GlassFish?

标签: dependency-injection glassfish java-ee-6 cdi hk2


【解决方案1】:

一般不支持字符串注入。您可以使用限定词,这应该有助于解决问题。

您的部署中有beans.xml 文件吗?

【讨论】:

  • 我尝试使用限定符,是的,我有 beans.xml,但不知何故我可以解决这个问题。我在 stackoverflow 的某个地方读到,我们应该让 HK2 与 CDI 协调工作。两者都可以单独工作,但是当我集成 HK2 时,会抛出 UnsatisfiedDependencyException 来进行由 CDI @Qualifer 和 Produces 解决的注入
猜你喜欢
  • 2021-06-12
  • 2014-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-03
相关资源
最近更新 更多