CDI依赖注入在实现接口的类上失败

时间:2013-10-08 14:54:36

标签: java java-ee dependency-injection cdi code-injection

我们有这个例子:

public interface MyInterface {
    public void foo();
}

并实施课程:

public class MyInterfaceImpl implements MyInterface {
    @Override
    public void foo() {...}
}

当我尝试将依赖类MyResource注入MyInterfaceImpl时,没有任何错误或警告会发生任何事情但是没有注入MyResource,因此代码因NullPointerException而失败:

public class MyInterfaceImpl implements MyInterface {
    @Inject
    private MyResource resource;

    @Override
    public void foo() {
        resource.doAnything() <-- will throw NullPointerException
    }
}

我将它打包在.war存档中,并使用简单的Jersey应用程序部署在Glassfish v4上。我还尝试将beans.xml放到WEB-INF和META-INF中。

从MyInterfaceImpl类中删除“implements MyInterface”后,注入工作正常。为什么依赖注入不能用于实现接口的类?

0 个答案:

没有答案