在多个同名类时识别特定类

时间:2013-04-04 23:49:20

标签: java spring

我的genxml项目中包含两个项目,framework1framework2Framework2framework1的更新版本,它们都有类AbstractScreenTest.class。无论如何在下面的代码中我可以指定哪个 项目我想与之互动?

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

for (BeanDefinition component : components){
  cls = Class.forName(component.getBeanClassName());
  classList.add(cls.getName().toString());
}

1 个答案:

答案 0 :(得分:0)

您可以将@Deprecated批注添加到旧的(过时的)类中,并验证该组件不包含已弃用的批注。

for (BeanDefinition component : components){

   cls = Class.forName(component.getBeanClassName());

   if (!cls.isAnnotationPresent(Deprecated.class) {
      classList.add(cls.getName().toString());
   }
}

当然,这假设您没有任何其他已弃用的类要添加到类列表中。在这种情况下,您可以编写一个新的注释来标记您的旧类,尽管它真的是理想的是摆脱对过时类的依赖。