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());
}
}