Spring-扫描注解原理ZJ

public static void main(String[] args) throws IOException, ClassNotFoundException {
        Set<BeanDefinition> candidates = new LinkedHashSet<>();

        ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver();  
        Resource[] resources = resourcePatternResolver.getResources("classpath*:com/my/*/*.**");  

        MetadataReaderFactory metadata=new SimpleMetadataReaderFactory();
        for(Resource resource:resources) {
            MetadataReader metadataReader=metadata.getMetadataReader(resource);
            ScannedGenericBeanDefinition sbd = new ScannedGenericBeanDefinition(metadataReader);
            sbd.setResource(resource);
            sbd.setSource(resource);
            candidates.add(sbd);
        }
        for(BeanDefinition beanDefinition : candidates) {  
            String classname=beanDefinition.getBeanClassName();
            Controller c=Class.forName(classname).getAnnotation(Controller.class);
            Service s=Class.forName(classname).getAnnotation(Service.class);
            Component component=Class.forName(classname).getAnnotation(Component.class);
            if(c!=null ||s!=null ||component!=null)
            System.out.println(classname);
        } 

    }

猜你喜欢

转载自blog.csdn.net/u011624903/article/details/80111628