Java 类org.springframework.context.annotation.ScannedGenericBeanDefinition 实例源码

项目:https-github.com-g0t4-jenkins2-course-spring-boot    文件:WebServletHandlerTests.java   
@SuppressWarnings("unchecked")
@Test
public void defaultServletConfiguration() throws IOException {
    ScannedGenericBeanDefinition scanned = new ScannedGenericBeanDefinition(
            new SimpleMetadataReaderFactory()
                    .getMetadataReader(DefaultConfigurationServlet.class.getName()));
    this.handler.handle(scanned, this.registry);
    BeanDefinition servletRegistrationBean = this.registry
            .getBeanDefinition(DefaultConfigurationServlet.class.getName());
    MutablePropertyValues propertyValues = servletRegistrationBean
            .getPropertyValues();
    assertThat(propertyValues.get("asyncSupported")).isEqualTo(false);
    assertThat(((Map<String, String>) propertyValues.get("initParameters")))
            .isEmpty();
    assertThat((Integer) propertyValues.get("loadOnStartup")).isEqualTo(-1);
    assertThat(propertyValues.get("name"))
            .isEqualTo(DefaultConfigurationServlet.class.getName());
    assertThat((String[]) propertyValues.get("urlMappings")).isEmpty();
    assertThat(propertyValues.get("servlet")).isEqualTo(scanned);
}
项目:https-github.com-g0t4-jenkins2-course-spring-boot    文件:WebFilterHandlerTests.java   
@SuppressWarnings("unchecked")
@Test
public void defaultFilterConfiguration() throws IOException {
    ScannedGenericBeanDefinition scanned = new ScannedGenericBeanDefinition(
            new SimpleMetadataReaderFactory()
                    .getMetadataReader(DefaultConfigurationFilter.class.getName()));
    this.handler.handle(scanned, this.registry);
    BeanDefinition filterRegistrationBean = this.registry
            .getBeanDefinition(DefaultConfigurationFilter.class.getName());
    MutablePropertyValues propertyValues = filterRegistrationBean.getPropertyValues();
    assertThat(propertyValues.get("asyncSupported")).isEqualTo(false);
    assertThat((EnumSet<DispatcherType>) propertyValues.get("dispatcherTypes"))
            .containsExactly(DispatcherType.REQUEST);
    assertThat(((Map<String, String>) propertyValues.get("initParameters")))
            .isEmpty();
    assertThat((String[]) propertyValues.get("servletNames")).isEmpty();
    assertThat((String[]) propertyValues.get("urlPatterns")).isEmpty();
    assertThat(propertyValues.get("name"))
            .isEqualTo(DefaultConfigurationFilter.class.getName());
    assertThat(propertyValues.get("filter")).isEqualTo(scanned);
}
项目:spring-boot-concourse    文件:WebServletHandlerTests.java   
@SuppressWarnings("unchecked")
@Test
public void defaultServletConfiguration() throws IOException {
    ScannedGenericBeanDefinition scanned = new ScannedGenericBeanDefinition(
            new SimpleMetadataReaderFactory()
                    .getMetadataReader(DefaultConfigurationServlet.class.getName()));
    this.handler.handle(scanned, this.registry);
    BeanDefinition servletRegistrationBean = this.registry
            .getBeanDefinition(DefaultConfigurationServlet.class.getName());
    MutablePropertyValues propertyValues = servletRegistrationBean
            .getPropertyValues();
    assertThat(propertyValues.get("asyncSupported")).isEqualTo(false);
    assertThat(((Map<String, String>) propertyValues.get("initParameters")))
            .isEmpty();
    assertThat((Integer) propertyValues.get("loadOnStartup")).isEqualTo(-1);
    assertThat(propertyValues.get("name"))
            .isEqualTo(DefaultConfigurationServlet.class.getName());
    assertThat((String[]) propertyValues.get("urlMappings")).isEmpty();
    assertThat(propertyValues.get("servlet")).isEqualTo(scanned);
}
项目:spring-boot-concourse    文件:WebFilterHandlerTests.java   
@SuppressWarnings("unchecked")
@Test
public void defaultFilterConfiguration() throws IOException {
    ScannedGenericBeanDefinition scanned = new ScannedGenericBeanDefinition(
            new SimpleMetadataReaderFactory()
                    .getMetadataReader(DefaultConfigurationFilter.class.getName()));
    this.handler.handle(scanned, this.registry);
    BeanDefinition filterRegistrationBean = this.registry
            .getBeanDefinition(DefaultConfigurationFilter.class.getName());
    MutablePropertyValues propertyValues = filterRegistrationBean.getPropertyValues();
    assertThat(propertyValues.get("asyncSupported")).isEqualTo(false);
    assertThat((EnumSet<DispatcherType>) propertyValues.get("dispatcherTypes"))
            .containsExactly(DispatcherType.REQUEST);
    assertThat(((Map<String, String>) propertyValues.get("initParameters")))
            .isEmpty();
    assertThat((String[]) propertyValues.get("servletNames")).isEmpty();
    assertThat((String[]) propertyValues.get("urlPatterns")).isEmpty();
    assertThat(propertyValues.get("name"))
            .isEqualTo(DefaultConfigurationFilter.class.getName());
    assertThat(propertyValues.get("filter")).isEqualTo(scanned);
}
项目:contestparser    文件:WebServletHandlerTests.java   
@SuppressWarnings("unchecked")
@Test
public void defaultServletConfiguration() throws IOException {
    ScannedGenericBeanDefinition scanned = new ScannedGenericBeanDefinition(
            new SimpleMetadataReaderFactory()
                    .getMetadataReader(DefaultConfigurationServlet.class.getName()));
    this.handler.handle(scanned, this.registry);
    BeanDefinition servletRegistrationBean = this.registry
            .getBeanDefinition(DefaultConfigurationServlet.class.getName());
    MutablePropertyValues propertyValues = servletRegistrationBean
            .getPropertyValues();
    assertThat(propertyValues.get("asyncSupported"), is((Object) false));
    assertThat(((Map<String, String>) propertyValues.get("initParameters")).size(),
            is(0));
    assertThat((Integer) propertyValues.get("loadOnStartup"), is(-1));
    assertThat(propertyValues.get("name"),
            is((Object) DefaultConfigurationServlet.class.getName()));
    assertThat((String[]) propertyValues.get("urlMappings"), is(arrayWithSize(0)));
    assertThat(propertyValues.get("servlet"), is(equalTo((Object) scanned)));
}
项目:contestparser    文件:WebFilterHandlerTests.java   
@SuppressWarnings("unchecked")
@Test
public void defaultFilterConfiguration() throws IOException {
    ScannedGenericBeanDefinition scanned = new ScannedGenericBeanDefinition(
            new SimpleMetadataReaderFactory()
                    .getMetadataReader(DefaultConfigurationFilter.class.getName()));
    this.handler.handle(scanned, this.registry);
    BeanDefinition filterRegistrationBean = this.registry
            .getBeanDefinition(DefaultConfigurationFilter.class.getName());
    MutablePropertyValues propertyValues = filterRegistrationBean.getPropertyValues();
    assertThat(propertyValues.get("asyncSupported"), is((Object) false));
    assertThat((EnumSet<DispatcherType>) propertyValues.get("dispatcherTypes"),
            is(EnumSet.of(DispatcherType.REQUEST)));
    assertThat(((Map<String, String>) propertyValues.get("initParameters")).size(),
            is(0));
    assertThat((String[]) propertyValues.get("servletNames"), is(arrayWithSize(0)));
    assertThat((String[]) propertyValues.get("urlPatterns"), is(arrayWithSize(0)));
    assertThat(propertyValues.get("name"),
            is((Object) DefaultConfigurationFilter.class.getName()));
    assertThat(propertyValues.get("filter"), is(equalTo((Object) scanned)));
}
项目:fastser-web    文件:RestComponentScanner.java   
@Override
  protected Set<BeanDefinitionHolder> doScan(String... basePackages) {
    Set<BeanDefinitionHolder> beanDefinitionHolders = super.doScan(basePackages);
    Assert.notEmpty(basePackages, "At least one base package must be specified");
    Set<BeanDefinition> candidates = findCandidateComponents(basePackage);
   if (candidates.isEmpty()) {
       logger.warn("No MyBatis mapper was found in 'ffff' package. Please check your configuration.");
   } else {
    for (BeanDefinition beanDefinition : candidates) {
        if(beanDefinition instanceof ScannedGenericBeanDefinition){
            ScannedGenericBeanDefinition sgBeanDefinition = (ScannedGenericBeanDefinition)beanDefinition;
            Map<String, Object> metaMap = sgBeanDefinition.getMetadata().getAnnotationAttributes(annotationMappingClass.getName());
            String parent = RestDataUtils.typeAnnotationAttributesResolver(metaMap);
            String beanName = this.beanNameGenerator.generateBeanName(beanDefinition, super.getRegistry());
            registerRestInfo(beanName, beanDefinition, sgBeanDefinition, parent, RestAnotationType.MAPPING);
            registerRestInfo(beanName, beanDefinition, sgBeanDefinition, parent, RestAnotationType.VALIDATOR);
        }
    }
   }
   RestHandlerMethodMapping.registerGenericRestful(applicationContext.getBean(GENERIC_RESTFUL_SERVICE));

return beanDefinitionHolders;
  }
项目:pebble-spring-boot-starter    文件:ServletComponentHandler.java   
void handle(ScannedGenericBeanDefinition beanDefinition, BeanDefinitionRegistry registry) {
    Map<String, Object> attributes = beanDefinition.getMetadata()
            .getAnnotationAttributes(this.annotationType.getName());
    if (attributes != null) {
        doHandle(attributes, beanDefinition, registry);
    }
}
项目:pebble-spring-boot-starter    文件:ServletComponenRegisteringPostProcessor.java   
private void scanPackage(ClassPathScanningCandidateComponentProvider componentProvider, String packageToScan) {
    for (BeanDefinition candidate : componentProvider.findCandidateComponents(packageToScan)) {
        if (candidate instanceof ScannedGenericBeanDefinition) {
            for (ServletComponentHandler handler : HANDLERS) {
                handler.handle(((ScannedGenericBeanDefinition) candidate),
                        (BeanDefinitionRegistry) this.applicationContext);
            }
        }
    }
}
项目:https-github.com-g0t4-jenkins2-course-spring-boot    文件:ServletComponentRegisteringPostProcessor.java   
private void scanPackage(
        ClassPathScanningCandidateComponentProvider componentProvider,
        String packageToScan) {
    for (BeanDefinition candidate : componentProvider
            .findCandidateComponents(packageToScan)) {
        if (candidate instanceof ScannedGenericBeanDefinition) {
            for (ServletComponentHandler handler : HANDLERS) {
                handler.handle(((ScannedGenericBeanDefinition) candidate),
                        (BeanDefinitionRegistry) this.applicationContext);
            }
        }
    }
}
项目:https-github.com-g0t4-jenkins2-course-spring-boot    文件:ServletComponentHandler.java   
void handle(ScannedGenericBeanDefinition beanDefinition,
        BeanDefinitionRegistry registry) {
    Map<String, Object> attributes = beanDefinition.getMetadata()
            .getAnnotationAttributes(this.annotationType.getName());
    if (attributes != null) {
        doHandle(attributes, beanDefinition, registry);
    }
}
项目:https-github.com-g0t4-jenkins2-course-spring-boot    文件:WebListenerHandlerTests.java   
@Test
public void listener() throws IOException {
    ScannedGenericBeanDefinition scanned = new ScannedGenericBeanDefinition(
            new SimpleMetadataReaderFactory()
                    .getMetadataReader(TestListener.class.getName()));
    this.handler.handle(scanned, this.registry);
    this.registry.getBeanDefinition(TestListener.class.getName());
}
项目:https-github.com-g0t4-jenkins2-course-spring-boot    文件:WebServletHandlerTests.java   
@Test
public void servletWithCustomName() throws IOException {
    ScannedGenericBeanDefinition scanned = new ScannedGenericBeanDefinition(
            new SimpleMetadataReaderFactory()
                    .getMetadataReader(CustomNameServlet.class.getName()));
    this.handler.handle(scanned, this.registry);
    BeanDefinition servletRegistrationBean = this.registry
            .getBeanDefinition("custom");
    MutablePropertyValues propertyValues = servletRegistrationBean
            .getPropertyValues();
    assertThat(propertyValues.get("name")).isEqualTo("custom");
}
项目:https-github.com-g0t4-jenkins2-course-spring-boot    文件:WebServletHandlerTests.java   
BeanDefinition getBeanDefinition(Class<?> filterClass) throws IOException {
    ScannedGenericBeanDefinition scanned = new ScannedGenericBeanDefinition(
            new SimpleMetadataReaderFactory()
                    .getMetadataReader(filterClass.getName()));
    this.handler.handle(scanned, this.registry);
    return this.registry.getBeanDefinition(filterClass.getName());
}
项目:https-github.com-g0t4-jenkins2-course-spring-boot    文件:WebFilterHandlerTests.java   
@Test
public void filterWithCustomName() throws IOException {
    ScannedGenericBeanDefinition scanned = new ScannedGenericBeanDefinition(
            new SimpleMetadataReaderFactory()
                    .getMetadataReader(CustomNameFilter.class.getName()));
    this.handler.handle(scanned, this.registry);
    BeanDefinition filterRegistrationBean = this.registry.getBeanDefinition("custom");
    MutablePropertyValues propertyValues = filterRegistrationBean.getPropertyValues();
    assertThat(propertyValues.get("name")).isEqualTo("custom");
}
项目:https-github.com-g0t4-jenkins2-course-spring-boot    文件:WebFilterHandlerTests.java   
BeanDefinition getBeanDefinition(Class<?> filterClass) throws IOException {
    ScannedGenericBeanDefinition scanned = new ScannedGenericBeanDefinition(
            new SimpleMetadataReaderFactory()
                    .getMetadataReader(filterClass.getName()));
    this.handler.handle(scanned, this.registry);
    return this.registry.getBeanDefinition(filterClass.getName());
}
项目:spring-boot-concourse    文件:ServletComponentRegisteringPostProcessor.java   
private void scanPackage(
        ClassPathScanningCandidateComponentProvider componentProvider,
        String packageToScan) {
    for (BeanDefinition candidate : componentProvider
            .findCandidateComponents(packageToScan)) {
        if (candidate instanceof ScannedGenericBeanDefinition) {
            for (ServletComponentHandler handler : HANDLERS) {
                handler.handle(((ScannedGenericBeanDefinition) candidate),
                        (BeanDefinitionRegistry) this.applicationContext);
            }
        }
    }
}
项目:spring-boot-concourse    文件:ServletComponentHandler.java   
void handle(ScannedGenericBeanDefinition beanDefinition,
        BeanDefinitionRegistry registry) {
    Map<String, Object> attributes = beanDefinition.getMetadata()
            .getAnnotationAttributes(this.annotationType.getName());
    if (attributes != null) {
        doHandle(attributes, beanDefinition, registry);
    }
}
项目:spring-boot-concourse    文件:WebListenerHandlerTests.java   
@Test
public void listener() throws IOException {
    ScannedGenericBeanDefinition scanned = new ScannedGenericBeanDefinition(
            new SimpleMetadataReaderFactory()
                    .getMetadataReader(TestListener.class.getName()));
    this.handler.handle(scanned, this.registry);
    this.registry.getBeanDefinition(TestListener.class.getName());
}
项目:spring-boot-concourse    文件:WebServletHandlerTests.java   
@Test
public void servletWithCustomName() throws IOException {
    ScannedGenericBeanDefinition scanned = new ScannedGenericBeanDefinition(
            new SimpleMetadataReaderFactory()
                    .getMetadataReader(CustomNameServlet.class.getName()));
    this.handler.handle(scanned, this.registry);
    BeanDefinition servletRegistrationBean = this.registry
            .getBeanDefinition("custom");
    MutablePropertyValues propertyValues = servletRegistrationBean
            .getPropertyValues();
    assertThat(propertyValues.get("name")).isEqualTo("custom");
}
项目:spring-boot-concourse    文件:WebServletHandlerTests.java   
BeanDefinition getBeanDefinition(Class<?> filterClass) throws IOException {
    ScannedGenericBeanDefinition scanned = new ScannedGenericBeanDefinition(
            new SimpleMetadataReaderFactory()
                    .getMetadataReader(filterClass.getName()));
    this.handler.handle(scanned, this.registry);
    return this.registry.getBeanDefinition(filterClass.getName());
}
项目:spring-boot-concourse    文件:WebFilterHandlerTests.java   
@Test
public void filterWithCustomName() throws IOException {
    ScannedGenericBeanDefinition scanned = new ScannedGenericBeanDefinition(
            new SimpleMetadataReaderFactory()
                    .getMetadataReader(CustomNameFilter.class.getName()));
    this.handler.handle(scanned, this.registry);
    BeanDefinition filterRegistrationBean = this.registry.getBeanDefinition("custom");
    MutablePropertyValues propertyValues = filterRegistrationBean.getPropertyValues();
    assertThat(propertyValues.get("name")).isEqualTo("custom");
}
项目:spring-boot-concourse    文件:WebFilterHandlerTests.java   
BeanDefinition getBeanDefinition(Class<?> filterClass) throws IOException {
    ScannedGenericBeanDefinition scanned = new ScannedGenericBeanDefinition(
            new SimpleMetadataReaderFactory()
                    .getMetadataReader(filterClass.getName()));
    this.handler.handle(scanned, this.registry);
    return this.registry.getBeanDefinition(filterClass.getName());
}
项目:contestparser    文件:ServletComponentRegisteringPostProcessor.java   
private void scanPackage(
        ClassPathScanningCandidateComponentProvider componentProvider,
        String packageToScan) {
    for (BeanDefinition candidate : componentProvider
            .findCandidateComponents(packageToScan)) {
        if (candidate instanceof ScannedGenericBeanDefinition) {
            for (ServletComponentHandler handler : HANDLERS) {
                handler.handle(((ScannedGenericBeanDefinition) candidate),
                        (BeanDefinitionRegistry) this.applicationContext);
            }
        }
    }
}
项目:contestparser    文件:ServletComponentHandler.java   
void handle(ScannedGenericBeanDefinition beanDefinition,
        BeanDefinitionRegistry registry) {
    Map<String, Object> attributes = beanDefinition.getMetadata()
            .getAnnotationAttributes(this.annotationType.getName());
    if (attributes != null) {
        doHandle(attributes, beanDefinition, registry);
    }
}
项目:contestparser    文件:WebListenerHandlerTests.java   
@Test
public void listener() throws IOException {
    ScannedGenericBeanDefinition scanned = new ScannedGenericBeanDefinition(
            new SimpleMetadataReaderFactory()
                    .getMetadataReader(TestListener.class.getName()));
    this.handler.handle(scanned, this.registry);
    this.registry.getBeanDefinition(TestListener.class.getName());
}
项目:contestparser    文件:WebServletHandlerTests.java   
@Test
public void servletWithCustomName() throws IOException {
    ScannedGenericBeanDefinition scanned = new ScannedGenericBeanDefinition(
            new SimpleMetadataReaderFactory()
                    .getMetadataReader(CustomNameServlet.class.getName()));
    this.handler.handle(scanned, this.registry);
    BeanDefinition servletRegistrationBean = this.registry
            .getBeanDefinition("custom");
    MutablePropertyValues propertyValues = servletRegistrationBean
            .getPropertyValues();
    assertThat(propertyValues.get("name"), is((Object) "custom"));
}
项目:contestparser    文件:WebServletHandlerTests.java   
BeanDefinition getBeanDefinition(Class<?> filterClass) throws IOException {
    ScannedGenericBeanDefinition scanned = new ScannedGenericBeanDefinition(
            new SimpleMetadataReaderFactory()
                    .getMetadataReader(filterClass.getName()));
    this.handler.handle(scanned, this.registry);
    return this.registry.getBeanDefinition(filterClass.getName());
}
项目:contestparser    文件:WebFilterHandlerTests.java   
@Test
public void filterWithCustomName() throws IOException {
    ScannedGenericBeanDefinition scanned = new ScannedGenericBeanDefinition(
            new SimpleMetadataReaderFactory()
                    .getMetadataReader(CustomNameFilter.class.getName()));
    this.handler.handle(scanned, this.registry);
    BeanDefinition filterRegistrationBean = this.registry.getBeanDefinition("custom");
    MutablePropertyValues propertyValues = filterRegistrationBean.getPropertyValues();
    assertThat(propertyValues.get("name"), is((Object) "custom"));
}
项目:contestparser    文件:WebFilterHandlerTests.java   
BeanDefinition getBeanDefinition(Class<?> filterClass) throws IOException {
    ScannedGenericBeanDefinition scanned = new ScannedGenericBeanDefinition(
            new SimpleMetadataReaderFactory()
                    .getMetadataReader(filterClass.getName()));
    this.handler.handle(scanned, this.registry);
    return this.registry.getBeanDefinition(filterClass.getName());
}
项目:book-reading    文件:ClassPathScanningCandidateComponentProviderExtendDemo.java   
/**
 * @param args
 * @throws ClassNotFoundException
 * @throws IllegalAccessException
 * @throws InvocationTargetException
 * @throws NoSuchMethodException
 */
public static void main(String[] args) throws ClassNotFoundException, InvocationTargetException, IllegalAccessException, NoSuchMethodException {
    ITestAnnotation iTestAnnotation = new ITestAnnotation() {

        @Override
        public void test() {
            System.out.println("test test");

        }
    };
    ClassPathScanningCandidateComponentProviderExtend provider = new ClassPathScanningCandidateComponentProviderExtend(false);
    provider.addIncludeFilter(new AnnotationTypeFilter(TestAnnotation.class));
    String basePackage = "com/doctor";
    Set<ScannedGenericBeanDefinition> components = provider.findCandidateComponents(basePackage);
    for (ScannedGenericBeanDefinition component : components) {
        System.out.printf("Component: %s\n", component.getBeanClassName());
        System.out.println(component.getMetadata().getAnnotationTypes());
        Class<?> classT = Class.forName(component.getBeanClassName());

        Set<MethodMetadata> annotatedMethods = component.getMetadata().getAnnotatedMethods("com.doctor.practice01.TestAnnotation");
        for (MethodMetadata methodMetadata : annotatedMethods) {
            System.out.println(methodMetadata.getMethodName());
            System.out.println(methodMetadata.getDeclaringClassName());
            System.out.println(methodMetadata.getReturnTypeName());
            System.out.println(methodMetadata.getAnnotationAttributes("com.doctor.practice01.TestAnnotation"));
            MethodInvoker methodInvoker = new MethodInvoker();
            methodInvoker.setTargetMethod(methodMetadata.getMethodName());
            methodInvoker.setTargetObject(iTestAnnotation);
            methodInvoker.prepare();
            methodInvoker.invoke();
        }

    }

}
项目:spring-component-framework    文件:ApplicationFeatureResolver.java   
private void scanAppRepository(AbstractApplicationContext context, Component component) {
    String appRepository = component.getManifestAttribute(APP_REPOSITORY);
    if (StringUtils.isEmpty(appRepository)) {
        return;
    }
    int count;
    if (context instanceof AnnotationConfigRegistry) {
        int before = context.getBeanDefinitionCount();
        ((AnnotationConfigRegistry) context).scan(StringUtils.split(appRepository, CONFIG_LOCATION_DELIMITERS));
        count = context.getBeanDefinitionCount() - before;
    } else {
        ClassPathBeanDefinitionScanner scanner =
                new ClassPathBeanDefinitionScanner((BeanDefinitionRegistry) context);
        scanner.setEnvironment(context.getEnvironment());
        scanner.setResourceLoader(context);
        scanner.setIncludeAnnotationConfig(false);
        count = scanner.scan(StringUtils.split(appRepository, CONFIG_LOCATION_DELIMITERS));
    }
    if (count > 0 && logger.isDebugEnabled()) {
        logger.debug("Scanned {} beans in {}", count, component.getDisplayName());
        String[] names = context.getBeanDefinitionNames();
        for (String name : names) {
            BeanDefinition definition = ((GenericApplicationContext) context).getBeanDefinition(name);
            if (definition instanceof ScannedGenericBeanDefinition) {
                ScannedGenericBeanDefinition sgbd = (ScannedGenericBeanDefinition) definition;
                Class<?> beanClass;
                try {
                    beanClass = sgbd.resolveBeanClass(context.getClassLoader());
                } catch (ClassNotFoundException e) {
                    continue;
                }
                if (beanClass != null) {
                    logger.debug("\t{}", beanClass.getName());
                }
            }
        }
    }

}
项目:fastser-web    文件:RestComponentScanner.java   
private void registerRestInfo(String beanName, BeanDefinition beanDefinition,
        ScannedGenericBeanDefinition sgBeanDefinition, String parent, RestAnotationType type) {
    String annotationClassName = null;

    if(RestAnotationType.MAPPING == type){
        annotationClassName = annotationMappingClass.getName();
    }else if(RestAnotationType.VALIDATOR == type){
        annotationClassName = annotationValidatorClass.getName();
    }
    Set<MethodMetadata> methodMetadata = sgBeanDefinition.getMetadata().getAnnotatedMethods(annotationClassName);
    Iterator<MethodMetadata> iterator = methodMetadata.iterator();
    while(iterator.hasNext()){
        RestAnotationMetadata info = new RestAnotationMetadata();
        info.setParent(parent);
        MethodMetadata mmd = iterator.next();
        Map<String, Object> valueMap = mmd.getAnnotationAttributes(annotationClassName);
        if(null != valueMap){
            info = RestDataUtils.methodAnnotationAttributesResolver(valueMap, info);
            info.setType(type);
        }
        RestMethodMappingInfo restMethodMappingInfo = RestDataUtils.buildRestMethodMappingInfo(beanDefinition.getBeanClassName(), mmd.getMethodName());
        info.setMethodMappingInfo(restMethodMappingInfo);
        if(RestAnotationType.MAPPING == type){
            RestHandlerMethodMapping.registerRestMethodMapping(info);
        }else if(RestAnotationType.VALIDATOR == type){
            RestHandlerMethodMapping.registerRestValidatorMapping(info);
        }
        RestHandlerMethod restHandlerMethod = RestDataUtils.buildRestHandlerMethod(beanName, mmd.getMethodName(), info.getTable());
        if(null != restMethodMappingInfo && null != restHandlerMethod){
            RestHandlerMethodMapping.registerHandlerMethod(restMethodMappingInfo, restHandlerMethod);
        }
    }
}
项目:hessoa    文件:HessianServiceScanner.java   
@Override
protected Set<BeanDefinitionHolder> doScan(String... basePackages) {
    Set<BeanDefinitionHolder> beanDefinitions = new LinkedHashSet<BeanDefinitionHolder>();
    for (String basePackage : basePackages) {
        Set<BeanDefinition> candidates = findCandidateComponents(basePackage);
        for (BeanDefinition candidate : candidates) {
            String originalBeanName = this.beanNameGenerator.generateBeanName(candidate, this.registry);
            String beanName = this.exporterBeanNameGenerator.generateBeanName(candidate, this.registry);

            if(beanName == null || beanName.isEmpty()) {
                beanName = candidate.getBeanClassName(); // 确保beanName有值
            }

            // beanName必须以/开头
            if(!beanName.startsWith("/")) {
                beanName = "/" + beanName;
            }

            beanName = "/" + Constants.HESSOA_URL_PREFIX + beanName;

            ScannedGenericBeanDefinition bd = (ScannedGenericBeanDefinition) candidate;
            String[] interfaces = bd.getMetadata().getInterfaceNames();
            if (interfaces == null || interfaces.length == 0) {
                throw new RuntimeException("@HessianService bean must implement at least one interface");
            }
            Class<?> interf = null;
            Class<?> annoInterf = (Class<?>) getAnnotationValue(bd.getMetadata(), "value");
            if(annoInterf != null) {
                if(annoInterf.isInterface()) {
                    interf = annoInterf;
                } else {
                    throw new RuntimeException("@HessianService value must be interface class");
                }
            } else {
                throw new RuntimeException("@HessianService must have value (interface)");
            }


            /**
             * 下面这一段,实际上等价于xml配置
             */
            BeanDefinitionBuilder hessianBeanDef = 
                    BeanDefinitionBuilder.genericBeanDefinition(SOAHessianServiceExporter.class);
            hessianBeanDef.addPropertyReference("service", originalBeanName);
            hessianBeanDef.addPropertyValue("beanName", beanName);
            hessianBeanDef.addPropertyValue("serviceInterface", interf.getName());

            BeanDefinitionHolder definitionHolder = new BeanDefinitionHolder(
                    hessianBeanDef.getBeanDefinition(), beanName);
            beanDefinitions.add(definitionHolder);
            registerBeanDefinition(definitionHolder, this.registry);
        }
    }

    // 打印扫描信息,可用于debug
    if (beanDefinitions.isEmpty()) {
        System.out.println("no service scaned");
    } else {
        for (BeanDefinitionHolder holder : beanDefinitions) {
            System.out.println("scanned service:" + holder.getBeanName());
        }
    }

    return beanDefinitions;
}