2016-04-05 10 views
0

状況:まだSpring 1.2.6を使用している古いコードのコンポーネントに直面しています。コンポーネントは重要であり、変更することはできません。この古いSpringバージョンには、Spring 2.x.xのeditedというquery()メソッドが含まれています。残りのコードでは、より新しいバージョンのSpring(Spring 2.5.6など)を使用したいと考えています。依存関係を使用できるクラス/モジュールを指定することは可能ですか?

ゴール:私は、この古いquery()メソッドはコンポーネントでのみ使用できると指定したいので、他のコードはこれに悩まされません。依存関係を使用できるクラス/モジュールを特定することは可能ですか?

ありがとうございます!

+0

どの依存マネージャを使用していますか? Maven? Gradle? – FransGuelinckx

答えて

1

ライブラリが同じクラスローダにロードされているので、私はそれが不可能であることを認識しています。オブジェクトがすでに存在する場合、すべてのオブジェクトがオーバーロードされます。

例えば、あなた(またはコンポーネント)がSpring 1.2.6をロードして、コンポーネントがそれを使用できるようにして、実際に2.5.6をロードしようとすると、それはオーバーロードします。つまり、1.2.6 getはアンロードされ、代わりに2.5.6。

これを解決する方法は、2つのクラスローダー(this Questionを参照)にロードするか、またはSpringがそれをサポートしている場合です(珍しいことですが、問題ありません - 両方のバージョンで異なるパッケージを使用するのですか?彼らは別のパッケージに入っているので、Class-Loaderは異なるPath(Full-Package + Object-Name + .java)を持っているため、オブジェクトを過負荷にしません。

関連する問題