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