Java 如何将Spring依赖项注入与类继承结合使用

Java 如何将Spring依赖项注入与类继承结合使用,java,spring,inheritance,dependency-injection,autowired,Java,Spring,Inheritance,Dependency Injection,Autowired,我有一个名为BaseService的父类,还有从BaseService继承的其他服务,因为它们都需要这些方法来完成它们的工作。像往常一样,超类的方法在子类中是可用的。。。然而,当我使用@Autowired DI注入子类时,我不能使用父类定义的方法,我只能使用子类中单独定义的方法。如何注入子类并使其正确实例化子类,以便父类的方法对我可用 例如父类 @Service public class BaseService{ public BooleanExpression combineBools(

我有一个名为BaseService的父类,还有从BaseService继承的其他服务,因为它们都需要这些方法来完成它们的工作。像往常一样,超类的方法在子类中是可用的。。。然而,当我使用@Autowired DI注入子类时,我不能使用父类定义的方法,我只能使用子类中单独定义的方法。如何注入子类并使其正确实例化子类,以便父类的方法对我可用

例如父类

@Service
public class BaseService{

  public BooleanExpression combineBools(Predicate predicate, BooleanExpression bool){
     BooleanExpression result = runupBool.and(predicate);
     return result;
  }
}
幼儿班

    @Service
    public class EqServiceImpl extends BaseService implements EqService{
     public EqServiceImpl(){
       super();
     }

     @Override
     public Iterable getAllData(Map<String, String> params, Predicate predicate) {
       // Some Method Specific to Child Class
     }
    }

如果我想访问控制器中的方法
eqService.combineBools()
,我无法访问。为什么会这样?如何修复它?

正如Darrenforsyth指出的那样,我正在以EqService作为类型进行实例化,这样它就不会拥有BaseService的所有方法,因为它不扩展该类,而是EqServiceImpl扩展了该类。因此,我需要类型为EqServiceImpl。在这里,如果不做其他更改,@Autowired不是DI的最佳选择。

请提供一个示例,说明您所说的内容。父类中的方法是如何定义的,以及如何调用它们?你能手动实例化这些类并得到想要的结果吗?@BillMan我能手动实例化这些类,但更喜欢DI。请查看上面编辑的问题,以便更好地理解我所说的内容。您的eqService是否定义了
combineBools
方法?这不是spring问题。@Darrenforsyth不需要定义它。它继承了它。
    @RestController
    public class EqController {

      @Autowired
      EqService eqService

      ...
    }