【发布时间】:2022-12-17 14:08:54
【问题描述】:
我有一个方法doSomething(a, x),我想提前 x 小时安排。我尝试了多种设置,但似乎都失败了。谁能告诉我一个服务结构或 springboot 功能可以完成这个同时也是可测试的?
这是我当前在 java 和 springboot 中的设置失败了,因为 fixedDelay 不是常量,因为我不希望我的测试延迟 x 小时。
此代码的预期结果是: a 在 x 小时后打印
服务:
@Service
public class SomeService{
public void doSomething(int a, long x) {
SchedulerService scheduler = new SchedulerService(a, x, this);
scheduler.doSomethingWithA();
}
public void doSomethingWithA(int a) {
System.out.println(a);
}
}
调度程序:
@AllArgsConstructor
public class SchedulerService {
private int a;
private final long x;
private transient SomeService someService;
@Scheduled(fixedDelay = x)
public void doSomethingWithA() {
someService.doSomethingWithA(a);
}
}
当然,实际的服务在数据库访问等方面要复杂得多,x 小时实际上是 10 年,但我想你明白了。
任何帮助将不胜感激
【问题讨论】:
标签: java spring-boot scheduled-tasks