Можно ли указать классы / модуль, в которых можно использовать зависимость?

Ситуация: я столкнулся с компонентом со старым кодом, который все еще использует Spring 1.2.6. Компонент важен и не может быть изменен. Эта старая версия Spring содержит метод query (), который является отредактировано в Spring 2.xx В остальной части моего кода я хочу использовать более новую версию Spring (например, Spring 2.5.6).

Цель: я хотел бы указать, что этот старый метод query () может использоваться только в компоненте, поэтому другой код это не беспокоит. Можно ли указать классы / модуль, в которых может использоваться зависимость?

Заранее спасибо!


person Camelaria    schedule 05.04.2016    source источник
comment
Какой менеджер зависимостей вы используете? Maven? Gradle?   -  person FransGuelinckx    schedule 05.04.2016


Ответы (1)


Насколько мне известно, это невозможно, поскольку вы загружаете библиотеки в один и тот же загрузчик классов, поэтому все объекты будут перегружены, когда объект уже существует.

Например, вы (или компонент) загружаете Spring 1.2.6, чтобы компонент мог его использовать, и вы на самом деле пытаетесь загрузить 2.5.6, он его перегрузит, что означает, что 1.2.6 выгружается, а 2.5.6 вместо этого .

Способ решить эту проблему - загрузить версии Spring в два загрузчика классов (см. this Question), или когда Spring поддерживает его (что необычно и, вероятно, не так - Извините, я не знаком со Spring), должны ли быть разные пакеты для обоих Версии. Поскольку они находятся в разных пакетах, загрузчик классов не будет перегружать объекты, поскольку у них другой «путь» (полный пакет + имя-объекта + .java).

person PreFiXAUT    schedule 05.04.2016