CDI和HK2不合作

时间:2014-08-21 21:45:18

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

我不确定我是否理解这两个使用@Inject进行注入的确切方式,但我最近开发了一个应用程序,在开发的第一阶段,我使用HK2的@inject使用依赖注入并绑定资源使用抽象活页夹,它工作正常。然后我想再注入一个值。我需要使用@Inject注入一个基本的String值,并且这个值得到了@ Produces.But注释的方法,当我这样做时,我得到了这个错误。

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";
       }
     }

1 个答案:

答案 0 :(得分:1)

通常不支持字符串注入。您可以使用限定符,这有助于解决问题。

您的部署中是否有beans.xml个文件?