ActFramework循环依赖问题

piaohao 发布于 2017/03/17 11:27
阅读 192
收藏 0

@罗格林 你好,

服务类基类:

public class BaseService{

  @Inject

  protected BService bService;

  protected void do(){

    System.out.println("print BaseService");

  }

}

 

A继承类:

public class AService {

  @Inject

  protected BService bService;

}

 

B继承类:

public class BService extends BaseService{

  @Inject

  protected AService aService;

  public void print(){

    super.do();

  }
}

像上面的这种循环依赖,act有没有优雅的解决方案。

我目前的解决办法是,去除BService与BaseService的继承关系,将BaseService的do方法分离到第三个类当中。

加载中
0
罗格林
罗格林

@piaohao , 根据你上面的依赖结构, Act是可以捕获到循环依赖的问题:

但是那天你的真实项目里面的确没能发现循环依赖. 这个还要麻烦你帮忙重现一下. 提个 issue 到Github上面去.

循环依赖问题的 一个办法是注入Provider而不是直接注入Bean. 比如上面的BaseService中, 直接注入了BService, 而BService又需要继承BaseService, 所以依赖注入没有办法建立最初的结构. 修改的办法是这样:

public class BaseService{

  @Inject

  protected Provider<BService> bServiceProvider;

  protected void do(){

    System.out.println("print BaseService");

  }

}

这样做可以延迟初始化BService的时间, 而不至于在初始化BaseService的时候发生循环依赖的问题. 

0
ldfowjemr
ldfowjemr

你的问题  不是框架的问题

0
piaohao
piaohao

引用来自“ldfowjemr”的评论

你的问题  不是框架的问题

循环依赖,框架对出错信息的提示友不友好还是有关的

返回顶部
顶部