我正在尝试构建一个中型 Java 项目,以使其尽可能模块化和可扩展。为此,主架构将只负责加载可能在运行时提供的 jars(模块)中的一些类。这种解决方案显然需要动态类加载,但它会将组件的耦合降至最低。
现在,问题来了。每个模块都可能依赖于某些库(例如 Hibernate、Spring ...)。为了避免依赖地狱,我将所有库与架构接口一起放在一个项目中,并将该项目作为所有模块的依赖项。理想情况下,我想从类加载中动态地排除这个依赖项目,以避免在运行时出现问题。
这是我的问题:
- 首先,这是个好主意吗?有没有更好的方法来解决我缺少的这个问题?
- 这是我应该关心的事情吗?或者我不止一次包含相同的课程这一事实不会成为问题?
- 如果这是一个问题,那么从加载中排除这些类的最佳方法是什么?我正在考虑按包过滤它们,但我不确定。
我仍然不太确定是使用这种架构还是使用 Maven 静态构建整个项目,不包括每个模块上的依赖项项目。
任何关于如何进行的建议都非常感谢。
目前我正在使用 Maven 构建和 Spring 作为框架,但我不介意添加其他技术。
谢谢你。