@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-07-28 12:04:19 发布