in spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-schedulerx/src/main/java/com/alibaba/cloud/scheduling/schedulerx/service/ScheduledJobSyncConfigurer.java [83:142]
private JobProperty convertToJobProperty(Task task, Object target, Method method) {
JobProperty jobProperty = new JobProperty();
Class targetClass = AopProxyUtils.ultimateTargetClass(target);
if (ClassUtils.isCglibProxyClass(targetClass)) {
targetClass = ClassUtils.getUserClass(target);
}
String jobName = targetClass.getSimpleName() + "_" + method.getName();
String model = this.defaultModel;
if (task != null && task instanceof CronTask) {
String expression = ((CronTask) task).getExpression();
jobProperty.setCron(expression);
}
if (task != null && task instanceof IntervalTask) {
long interval = ((IntervalTask) task).getInterval() / 1000;
interval = interval < 1 ? 1 : interval;
if (interval < 60) {
jobProperty.setTimeType(TimeType.SECOND_DELAY.getValue());
}
else {
jobProperty.setTimeType(TimeType.FIXED_RATE.getValue());
}
jobProperty.setTimeExpression(String.valueOf(interval));
}
SchedulerX schedulerXMethod = AnnotatedElementUtils.getMergedAnnotation(method, SchedulerX.class);
if (schedulerXMethod != null) {
if (StringUtils.isNotEmpty(schedulerXMethod.name())) {
jobName = schedulerXMethod.name();
}
if (isValidModel(schedulerXMethod.model())) {
model = schedulerXMethod.model();
}
if (StringUtils.isNotEmpty(schedulerXMethod.cron())) {
jobProperty.setCron(schedulerXMethod.cron());
}
if (schedulerXMethod.fixedRate() > 0) {
long interval = schedulerXMethod.timeUnit().toSeconds(schedulerXMethod.fixedRate());
interval = interval < 1 ? 1 : interval;
if (interval < 60) {
jobProperty.setTimeType(TimeType.SECOND_DELAY.getValue());
}
else {
jobProperty.setTimeType(TimeType.FIXED_RATE.getValue());
}
jobProperty.setTimeExpression(String.valueOf(interval));
}
}
jobProperty.setJobName(jobName);
jobProperty.setJobType(JobType.SPRINGSCHEDULE.getKey());
jobProperty.setJobModel(model);
SpringScheduleProfile profile = new SpringScheduleProfile();
profile.setClassName(targetClass.getName());
profile.setMethod(method.getName());
jobProperty.setContent(JsonUtil.toJson(profile));
jobProperty.setOverwrite(overwrite);
return jobProperty;
}