0

我的项目中包含 (2+) 个项目,genxml例如framework1framework2. 它们是同一框架的略有不同的版本,并且都具有类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 不能在一个类加载器中同时加载一个类的两个版本。

加载同一类的不同版本的唯一方法是使用具有不同类路径的两个不同的类加载器。没有简单的解决方案,特别是如果这些框架使用其他可以交互的类。

于 2013-04-05T13:54:37.303 回答