0

让我们举个例子:

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”后,注入工作。为什么依赖注入对实现接口的类不起作用?

4

0 回答 0