可以指定可以使用依赖项的类/模块吗?

时间:2016-04-05 15:24:57

标签: java maven dependencies version dependency-management

情况:我正面临一个仍然使用Spring 1.2.6的旧代码组件。该组件至关重要,无法更改。这个旧的Spring版本包含一个在Spring 2.x.x中为edited的query()方法。在我的其余代码中,我想使用更新版本的Spring(例如Spring 2.5.6)。

目标:我想指定我这个旧的query()方法只能在组件中使用,因此其他代码不会受此打扰。可以指定可以使用依赖项的类/模块吗?

提前致谢!

1 个答案:

答案 0 :(得分:1)

据我所知,这是不可能的,因为你将Libraries加载到同一个Class-Loader中,所以当Object已经存在时,所有的Object都会被重载。

例如你(或组件)加载Spring 1.2.6,所以组件可以使用它,你实际上尝试加载2.5.6它重载它,这意味着1.2.6 get的卸载和2.5 .6而不是。

解决这个问题的一种方法是在两个类加载器中加载Spring-Versions(参见this Question)或者Spring支持它(这是不寻常的,也不是问题。不是这样的 - 对不起,不熟悉使用Spring),两个版本都有不同的包。因为它们位于不同的包中,所以类加载器不会重载对象,因为它们具有不同的“路径”(Full-Package + Object-Name + .java)。