相关疑难解决方法(0)

如何用Spring 3.0表达式语言参数化@Scheduled(fixedDelay)?

当使用Spring 3.0功能来注释计划任务时,我想fixedDelay从配置文件中设置as参数,而不是将其硬连接到我的任务类中,就像当前...

@Scheduled(fixedDelay = 5000)
public void readLog() {
        ...
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,使用Spring表达式语言(SpEL)的方法似乎@Value返回一个String对象,而该对象又无法按fixedDelay参数的要求自动装入长值.

java configuration spring annotations scheduling

116
推荐指数
4
解决办法
8万
查看次数

在春季测试@Scheduled

Spring提供了使用注释以特定间隔安排和执行任务的可能性,例如 @Scheduled

有没有方便的单元测试这种行为的方法?

当然我可以自己调用bean的方法,但是我想确保不会因为配置错误等问题而遇到多次执行等问题.

其他框架提供了自己快速转发时间的可能性.一个例子是Activiti,你可以打电话

org.activiti.engine.impl.util.ClockUtil.setCurrentTime(date)
Run Code Online (Sandbox Code Playgroud)

快进框架使用的时间.

春天有类似的东西吗?

基本上我想要做的是在单元测试中使用这样的东西(运行使用SpringJUnit4ClassRunner)

@Test public void testTaskScheduling() {

  assertThat(someOtherBean.getSomeProperty(), is(equalTo(whatIinitiallyExpect)));

  SpringClockUtil.setDate(dateInTwoHours)// This is what I am missing
  SpringTaskExecutor.executeAllScheduledTasks() // Also missing

  assertThat(someOtherBean.getSomeProperty(), is(equalTo(whatIexpectNow)));
}
Run Code Online (Sandbox Code Playgroud)

java spring unit-testing scheduler

49
推荐指数
2
解决办法
3万
查看次数