我当前的项目有两项服务:
@Service
public class OtherService{
}
interface IService{
void methodA();
void methodB();
void methodC();
}
@Service
public class DefaultService implement IService{
@Autowried
private OtherService otherService;
public void methodA(){...};
public void methodB(){...};
public void methodC(){...};
}
实施其他功能时,我添加了新的业务流程:
要重用methodA,methodB
在新流程中运行methodC时添加新规则
所以我的解决方案是创建
new ChildService extends DefaultService
并覆盖methodC
。@Service
public class ChildService extends DefaultService{
@override
public void methodC(){
//want to use some method of otherService
}
}
问题是
methodC
想要在父类中使用otherService
bean。我有两种解决方案:将
private OtherService otherService
更改为protected OtherService otherService
。但是用protected
bean来考虑@Autowired
不是一个好习惯吗?将
@Autowried private OtherService otherService;
添加到ChildService
对于这种情况有什么更好的建议?
最佳答案
编辑。
将OtherService的访问说明更改为protected或提供一个
DefaultService中受保护的getOtherService()方法。