【发布时间】:2018-08-08 23:02:31
【问题描述】:
我有一个名为 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
}
}
例如。控制器
@RestController
public class EqController {
@Autowired
EqService eqService
...
}
如果我想访问控制器内部的方法eqService.combineBools(),我无法访问。为什么是这样?我该如何解决?
【问题讨论】:
-
请举例说明您所说的内容。
-
父类中的方法是怎么定义的,又是怎么调用的?您是否能够手动实例化这些类并获得所需的结果?
-
@BillMan 我可以手动实例化类,但更喜欢 DI。请参阅上面编辑过的问题,以便更好地了解我在说什么。
-
您的 eqService 是否定义了
combineBools方法?这不是春季问题。 -
@DarrenForsy 不需要定义它。它继承了它。
标签: java spring inheritance dependency-injection autowired