private void processBeanDefinitions()

in spring/core/src/main/java/org/apache/shardingsphere/elasticjob/spring/core/scanner/ClassPathJobScanner.java [61:84]


    private void processBeanDefinitions(final Set<BeanDefinitionHolder> beanDefinitions) {
        BeanDefinitionRegistry registry = getRegistry();
        for (BeanDefinitionHolder holder : beanDefinitions) {
            ScannedGenericBeanDefinition definition = (ScannedGenericBeanDefinition) holder.getBeanDefinition();
            Class<?> jobClass;
            try {
                jobClass = Class.forName(definition.getMetadata().getClassName());
            } catch (ClassNotFoundException ex) {
                // TODO: log
                continue;
            }
            ElasticJobConfiguration jobAnnotation = jobClass.getAnnotation(ElasticJobConfiguration.class);
            String registryCenter = jobAnnotation.registryCenter();
            BeanDefinitionBuilder factory = BeanDefinitionBuilder.rootBeanDefinition(ScheduleJobBootstrap.class);
            factory.setInitMethodName("schedule");
            if (!StringUtils.isEmpty(registryCenter)) {
                factory.addConstructorArgReference(registryCenter);
            } else {
                factory.addConstructorArgValue(new RuntimeBeanReference(CoordinatorRegistryCenter.class));
            }
            factory.addConstructorArgReference(Objects.requireNonNull(holder.getBeanName()));
            registry.registerBeanDefinition(jobAnnotation.jobName(), factory.getBeanDefinition());
        }
    }