List of usage examples for org.springframework.context.annotation ScannedGenericBeanDefinition getMetadata
@Override public final AnnotationMetadata getMetadata()
From source file:com.gzj.tulip.jade.context.spring.JadeComponentProvider.java
/** * jar?JadeDAO?//w w w .j av a 2 s .c om * <p> * ?BeanDefinition?DAO?? * {@link BeanDefinition#getBeanClassName()} DAO??? * <p> * BeanDefinition??Spring??? */ public Set<BeanDefinition> findCandidateComponents(String uriPrefix) { if (!uriPrefix.endsWith("/")) { uriPrefix = uriPrefix + "/"; } Set<BeanDefinition> candidates = new LinkedHashSet<BeanDefinition>(); try { String packageSearchPath = uriPrefix + this.resourcePattern; boolean traceEnabled = logger.isDebugEnabled(); boolean debugEnabled = logger.isDebugEnabled(); Resource[] resources = this.resourcePatternResolver.getResources(packageSearchPath); if (debugEnabled) { logger.debug("[jade/find] find " + resources.length + " resources for " + packageSearchPath); } for (int i = 0; i < resources.length; i++) { Resource resource = resources[i]; if (traceEnabled) { logger.trace("[jade/find] scanning " + resource); } // resourcePatternResolver.getResources?classPathResourcesmetadataReadergetInputStreamnull // ???exists if (!resource.exists()) { if (debugEnabled) { logger.debug("Ignored because not exists:" + resource); } } else if (resource.isReadable()) { MetadataReader metadataReader = metadataReaderFactory.getMetadataReader(resource); if (isCandidateComponent(metadataReader)) { ScannedGenericBeanDefinition sbd = new ScannedGenericBeanDefinition(metadataReader); sbd.setResource(resource); sbd.setSource(resource); if (sbd.getMetadata().isInterface() && sbd.getMetadata().isIndependent()) { if (debugEnabled) { logger.debug("Identified candidate component class: " + resource); } candidates.add(sbd); } else { if (traceEnabled) { logger.trace("Ignored because not a interface top-level class: " + resource); } } } else { if (traceEnabled) { logger.trace("Ignored because not matching any filter: " + resource); } } } else { if (traceEnabled) { logger.trace("Ignored because not readable: " + resource); } } } } catch (IOException ex) { throw new BeanDefinitionStoreException("I/O failure during jade scanning", ex); } return candidates; }