启动项目后在configureTasks方法中打断点未进入
原代码:
@Configuration
@Slf4j
@EnableScheduling
public class XXXTask implements SchedulingConfigurer {
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
ThreadPoolTaskScheduler threadPoolTaskScheduler = new ThreadPoolTaskScheduler();
threadPoolTaskScheduler.setPoolSize(10);
threadPoolTaskScheduler.initialize();
taskRegistrar.setTaskScheduler(threadPoolTaskScheduler);
taskRegistrar.addTriggerTask(
//1.执行方法
() -> xxxService.xxxxMethod(),
//2.设置执行周期(Trigger)
triggerContext -> {
//每天0点和12点执行
String cron = "0 0 0,12 * * ?";
return Objects.requireNonNull(new CronTrigger(cron).nextExecutionTime(triggerContext)).toInstant();
}
);
}
}
只需要在把@Configuration 与 @Component一起用,启动的时候就会进入configureTasks方法了,这个问题挺奇怪的@Configuration 注解中包含了@Component ,猜测spring对@Configuration 与 @Component 的处理逻辑有所不同,待验证
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Configuration {
@AliasFor(
annotation = Component.class
)
String value() default "";
boolean proxyBeanMethods() default true;
boolean enforceUniqueMethods() default true;
}