如果你的类路径中包含Spring,则可以执行以下操作。
在包中找到所有用XmlRootElement注释的类:
private List<Class> findMyTypes(String basePackage) throws IOException, ClassNotFoundException{ ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver(); metadataReaderFactory metadataReaderFactory = new CachingmetadataReaderFactory(resourcePatternResolver); List<Class> candidates = new ArrayList<Class>(); String packageSearchPath = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX + resolvebasePackage(basePackage) + "/" + "**/*.class"; Resource[] resources = resourcePatternResolver.getResources(packageSearchPath); for (Resource resource : resources) { if (resource.isReadable()) { metadataReader metadataReader = metadataReaderFactory.getmetadataReader(resource); if (isCandidate(metadataReader)) { candidates.add(Class.forName(metadataReader.getClassmetadata().getClassName())); } } } return candidates;}private String resolvebasePackage(String basePackage) { return ClassUtils.convertClassNameToResourcePath(SystemPropertyUtils.resolvePlaceholders(basePackage));}private boolean isCandidate(metadataReader metadataReader) throws ClassNotFoundException{ try { Class c = Class.forName(metadataReader.getClassmetadata().getClassName()); if (c.getAnnotation(XmlRootElement.class) != null) { return true; } } catch(Throwable e){ } return false;}


