如何修复java模块之间的循环依赖?

问题描述 投票:1回答:1

我正在重构代码,所以它使用模块。我面临的问题是,我在模块之间存在循环依赖:convertersapp,validatorsapp和modelapp。共有6个模块:

1. convertersapp
2. exceptionsapp
3. mainapp
4. modelapp
5. serviceapp
6. validatorapp

Module dependencies

我目前的方法 - 模块信息。每个模块的java文件是:

1. convertersapp: module convertersapp {
  requires modelapp;
  requires gson;
  requires exceptionspp;
  requires validatorapp;
  exports converters.others to serviceapp;
  exports converters.json to modelapp;
}

2. exceptionsapp: module exceptionspp {
  exports exceptions to convertersapp, mainapp,serviceapp, modelapp;
}

3. mainapp: module mainapp {
  requires serviceapp;
  requires exceptionspp;
  requires modelapp;
}

4. modelapp: module modelapp {
  exports model to mainapp, validatorapp,convertersapp, serviceapp;
  exports model.sorting to mainapp,serviceapp;
  requires gson;
  requires exceptionspp;
  requires convertersapp;
}

5. servicapp: module serviceapp {
  exports service to mainapp;
  requires modelapp;
  requires exceptionspp;
  requires convertersapp;
}

6. validatorapp: 

  module validatorapp {
  exports validator to convertersapp;
  requires modelapp;
}
java java-module
1个回答
3
投票

应该避免循环依赖层次结构,因为它很难理解,而且还不清楚模块应该在哪个顺序构建(在A之前的C之前的A之前......)。

共同策略:

  • 将所有三个模块合并为一个
  • 构建一个由其他人使用的公共实用程序模块,但它本身不使用其他模块。
  • 移动一些类以避免循环。
© www.soinside.com 2019 - 2024. All rights reserved.