一、该问题的重现步骤是什么?
1. 咨询下bladex-boot如何做定时任务,之前写bladex-cloud(3.2.0版本)的时候用xxl-job做的定时任务,上面是有测试用例的,能够自己完成开发
2. 现在用bladex-boot(4.6.0)版本的没看到测试用例,另外我这个是个小项目,不想起多个服务,能用@EnableScheduling注解做定时任务最好
3.现在用@EnableScheduling注解会报错,不知道哪里冲突了
二、你期待的结果是什么?实际看到的又是什么?
用bladex-boot的xxl-job,但是不多起服务
用@EnableScheduling注解做定时任务
5.13 分布式任务调度这个doc我看过了
三、你正在使用的是什么产品,什么版本?在什么操作系统上?
商业版 bladex-boot(4.6.0)
四、请提供详细的错误堆栈信息,这很重要。
用注释的报错信息
2025-09-26 10:21:29.463 ERROR 17216 --- [ scheduling-1] o.s.s.s.TaskUtils$LoggingErrorHandler : Unexpected error occurred in scheduled task
java.lang.NullPointerException: null
at java.base/java.util.Objects.requireNonNull(Objects.java:208)
at org.springblade.core.log.aspect.RequestLogAspect.aroundApi(RequestLogAspect.java:96)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:637)
at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:627)
at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:71)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:173)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:720)
at org.dftc.eletricdrive.eag.controller.BladeUserController$$SpringCGLIB$$0.syncUser(<generated>)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.springframework.scheduling.support.ScheduledMethodRunnable.runInternal(ScheduledMethodRunnable.java:130)
at org.springframework.scheduling.support.ScheduledMethodRunnable.lambda$run$2(ScheduledMethodRunnable.java:124)
at io.micrometer.observation.Observation.observe(Observation.java:499)
at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:124)
at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
at java.base/java.util.concurrent.FutureTask.runAndReset$$$capture(FutureTask.java:305)
at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java)
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:842)
2025-09-26 10:21:29.487 INFO 17216 --- [ main] o.s.c.literule.engine.RulePreloadRunner : Starting to warm up the blade rule cache
2025-09-26 10:21:29.488 INFO 17216 --- [ main] o.s.c.literule.engine.RulePreloadRunner : Rule cache warmup completed, cached 3 rule flows
2025-09-26 10:21:29.488 INFO 17216 --- [ main] o.s.c.literule.engine.RulePreloadRunner : Rule preload completed, loaded 26 rules and 3 rule flows, cost 30ms
五、若有更多详细信息,请在下面提供。
package org.springblade.common.job;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
/**
* 简单的Spring Task定时任务示例
*
* @author BladeX
*/
@Slf4j
@Component
public class SimpleScheduledTask {
private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
/**
* 每秒执行一次的定时任务
* 使用fixedDelay确保任务执行完成后再等待1秒
*/
@Scheduled(fixedDelay = 1000)
public void printMessage() {
String currentTime = LocalDateTime.now().format(DATE_TIME_FORMATTER);
log.info("Spring Task 定时任务执行中 - 当前时间: {}", currentTime);
}
}
扫一扫访问 Blade技术社区 移动端