【问题标题】:It is possible to specify the classes/module where a dependency can be used?可以指定可以使用依赖项的类/模块吗?
【发布时间】:2016-07-25 15:30:11
【问题描述】:

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

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

提前致谢!

【问题讨论】:

  • 您使用的是哪个依赖管理器?马文?摇篮?

标签: java maven dependencies version dependency-management


【解决方案1】:

据我所知,这是不可能的,因为您将库加载到同一个类加载器中,所以当对象已经存在时,所有对象都将被重载。

例如,您(或组件)加载 Spring 1.2.6 以便组件可以使用它,而您实际上尝试加载 2.5.6 会使其过载,这意味着 1.2.6 已卸载,而 2.5 .6 代替。

解决这个问题的一种方法是在两个类加载器中加载 Spring-Versions(参见 this Question)或者当 Spring 确实支持它时(这是不寻常的并且很可能不是这种情况 - 抱歉,不熟悉 Spring ),两个版本是否有不同的包。因为它们位于不同的包中,所以类加载器不会重载对象,因为它们具有不同的“路径”(完整包 + 对象名称 + .java)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-27
    • 1970-01-01
    • 2011-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多