@Component
@Configuration
public class JobConfigParser implements ApplicationContextAware {
public void setApplicationContext(ApplicationContext ctx) throws BeansException {
this.environment = ctx.getEnvironment();
Map<String, Object> beanMap = ctx.getBeansWithAnnotation(ElasticJobConfig.class);
Iterator var3 = beanMap.values().iterator();
while(var3.hasNext()) {
Object confBean = var3.next();
Class<?> clz = confBean.getClass();
this.getJobTypeClass(clz);
String jobTypeName = this.jobTypeClass.getSimpleName();
ElasticJobConfig conf = this.findElasticJobConfigAnnot(clz);
String jobClass = clz.getName();
if (jobClass.contains("$$EnhancerBySpringCGLIB")) {
jobClass = jobClass.substring(0, jobClass.indexOf("$$EnhancerBySpringCGLIB"));
}
String[] jobNames = conf.name();
if (jobNames == null) {
log.error("ElasticJobConf job name error. jobClass:{}", jobClass);
throw new IllegalArgumentException("ElasticJobConf job name error. jobClass:" + jobClass);
}
}
}
}
public ElasticJobConfig findElasticJobConfigAnnot(Class<?> clz) {
ElasticJobConfig elasticJobConfig = (ElasticJobConfig)clz.getAnnotation(ElasticJobConfig.class);
if (elasticJobConfig == null && clz.getSimpleName().contains("SpringCGLIB")) {
Class tmpClass = clz.getSuperclass();
for(int i = 0; i < 3; tmpClass = tmpClass.getSuperclass()) {
elasticJobConfig = (ElasticJobConfig)tmpClass.getAnnotation(ElasticJobConfig.class);
if (elasticJobConfig != null) {
return elasticJobConfig;
}
++i;
}
}
return elasticJobConfig;
}
spring 对于注解类 的扫描
最新推荐文章于 2023-09-30 08:00:00 发布
本文介绍了如何在Spring Boot应用中使用JobConfigParser类解析带有ElasticJobConfig注解的配置,包括获取配置类、处理增强类和验证job名称的步骤,适用于分布式任务调度的配置管理。
451

被折叠的 条评论
为什么被折叠?



