我当前的项目有两项服务:

@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()方法。

07-26 01:56