当具有相同名称的多个类时,标识特定的包含项目类

时间:2013-04-05 13:26:53

标签: java spring

我的genxml项目中包含了(2个以上)项目,例如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);

1 个答案:

答案 0 :(得分:0)

这不是Spring的问题,JVM不能在一个类加载器中同时加载两个版本的类。

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