我有一个方法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年,但我想你明白的想法。
如有任何帮助,我将不胜感激
1条答案
按热度按时间eiee3dmh1#
Spring v3.2.2在原来的3个长参数中添加了String参数来处理这个问题。
fixedDelayString
、fixedRateString
和initialDelayString
现在也可用。