返回空值的Java第二继承

返回空值的Java第二继承,java,spring,Java,Spring,我有三门课: public abstract class Provider{ @Autowired private ModelService modelService; protected void foo(String name) throws Exception { modelService.doSomething(); //line 10 } } @Service public class MyProvider extends Pro

我有三门课:

 public abstract class Provider{
   @Autowired
   private ModelService modelService;

   protected void foo(String name) throws Exception {
       modelService.doSomething();   //line 10
   }
 }


 @Service
 public class MyProvider extends Provider {
       // calling foo on the parent
       foo("mayName");
 }

 public class MyOAuthProvider extends MyProvider {
       // calling foo on the parent-->parrent
       foo("mayName");
 }
当我从MyProvider调用foo时,函数会工作

当我从MyOAuthProvider调用foo时,函数在NullPointerException上失败,因为modelService为null

跟踪:

Exception in thread "main" java.lang.NullPointerException
    at my.Provider.foo(Provider.java:10)
    at my.Nain.main(Nain.java:7)

任何人都可以帮助我理解为什么会发生这种情况,以及我如何解决我的问题

用@service注释MyAuthProvider将解决您的问题

您可以显示空指针异常的堆栈跟踪吗?显示使用MyAuthProvider的类。值得注意的是,这是一个很好的例子,说明了为什么构造函数注入被认为是比字段注入更好的实践。我将跟踪添加到问题中,请提供一个。我用@service注释MyAuthProvider,但仍然遇到同样的问题:如何创建MyAuthProvider?如果使用“新建”创建,自动布线将无法工作。为了让autowire正常工作,您需要spring使用@Service和componentScan为您创建autowire