当他们有多个相同名称的类别时,识别具体的项目类别
问题描述:
我有(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);
答
这不是Spring的问题,JVM不能同时在一个类加载器中加载两个类的类。
加载同一类的不同版本的唯一方法是使用具有不同类路径的两个不同类加载器。没有简单的解决方案,特别是如果这些框架使用其他可以交互的类。
你的两个课程都在同一个包里吗?如果是这样,我会认为你不会选择你得到的文件(除了以特定的方式排序类路径)。 – 2013-04-05 13:30:28
是的,他们都在同一个包。 – Colin747 2013-04-05 13:31:57
您是否在运行时注意到其中只有一个可用?两个具有相同包和名称的类肯定会在运行时给你带来麻烦。通过做某种构建时间注释处理,您可能可以实现您的目标,但我并不熟悉。 – 2013-04-05 13:35:40