【发布时间】:2020-02-22 17:38:18
【问题描述】:
我正在尝试让ScheduledExecutor 服务每天在特定时间运行MyTask。我遇到的问题是该任务使用@Service 组件,如果我在没有@Component 的情况下执行@Autowire,则该服务将无法工作,如果我将@Component 放在MyTask 上,则无论组件如何都首先运行Scheduler 在哪里。
我尝试通过构造函数和@DependsOn 发送服务,但没有成功。
@Component
public class MyRunnable implements Runnable {
@Autowired
private Service service;
@Override
public void run() {
//some code
ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
scheduler.scheduleAtFixedRate(new MyTask(),
initalDelay,
TimeUnit.DAYS.toSeconds(1),
TimeUnit.SECONDS);
}}
如果@Component 放在这里,首先运行
public class MyTask extends TimerTask {
@Autowired
private Service service;
}
【问题讨论】:
-
我不太明白你的问题。
Service有什么问题? -
为什么不使用 spring 中的
@Schedule注释? -
@AlexR 它在 MyTask 中不起作用
-
@Deadpool 我想在特定时间运行任务,比如凌晨 5 点,动态初始延迟。
-
你想每天早上 5 点运行任务吗?这个
with dynamical initial delay@M8765 是什么意思,请问您想在什么时间和哪一天运行任务?
标签: java spring autowired scheduledexecutorservice