我安排的工作在一定时间后会不断运行。
现在,我只想在满足条件的情况下运行此计划的作业。该条件是在运行时获取的,它不依赖于任何配置参数。
我如何实现这一目标。我知道Spring Boot 4.x提供了称为Condition的接口。但是以某种方式我的代码不起作用。
这是我的代码...
@Configuration
public class ScheduleTask {
@Scheduled(fixedRateString = "5000")
@Conditional(SchedulerCondition.class)
public void pollDepots() {
System.out.println("Running");
}
}
public class SchedulerCondition implements Condition {
@Override
public boolean matches(ConditionContext conditionContext, AnnotatedTypeMetadata annotatedTypeMetadata) {
return false;
//Here some condition needs to be implemented which is not dependent on the parameters of this method.
}
}
等待您的回复。 祝你有美好的一天。
答案 0 :(得分:0)
您可以将计划的任务拉到另一个班级:
public class ScheduledPollDepots {
@Scheduled(fixedRateString = "1000")
public void pollDepots() {
System.out.println("Running");
}
}
然后根据条件创建一个bean:
@Configuration
public class Config {
@Bean
@Conditional(SchedulerCondition.class)
public ScheduledPollDepots pollDepots() {
return new ScheduledPollDepots();
}
}
您的计划条件保持不变
public class SchedulerCondition implements Condition {
@Override
public boolean matches(ConditionContext conditionContext, AnnotatedTypeMetadata annotatedTypeMetadata) {
return false;
}
}
它应该正常工作。