0

プロジェクトに (2+) 個のプロジェクトが含まれています (genxml例:framework1と) framework2。それらは同じフレームワークのわずかに異なるバージョンであり、どちらもクラスを持っていAbstractScreenTest.classます。それぞれAbstractScreenTest.classに異なる注釈があります

@MyAnnotation(name="version",  value = "71automation")
@MyAnnotation(name="version",  value = "72automation")

とにかく、注釈または他の方法を使用して、以下のコードで使用したい AbstractScreenTest.class を指定できる方法はありますか?現時点では、最初に見つかったインスタンスのみが使用されます。

ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider(true);
provider.addIncludeFilter(new AssignableTypeFilter(AbstractScreenTest.class));
Set<BeanDefinition> components = provider.findCandidateComponents(candiatePackage);
4

1 に答える 1

0

これは Spring の問題ではありません。JVM では、1 つのクラスローダーに 2 つのバージョンのクラスを同時にロードすることはできません。

同じクラスの異なるバージョンをロードする唯一の方法は、異なるクラスパスを持つ 2 つの異なるクラスローダーを使用することです。特にこれらのフレームワークが相互作用する可能性のある他のクラスを使用している場合、簡単な解決策はありません。

于 2013-04-05T13:54:37.303 に答える