Java spring引导计划在方法级别启用/禁用任务
我按照这个指南开始在SpringBoot中安排任务 我想在同一个类中为不同的任务添加更多的方法,想知道是否可以通过属性和Java spring引导计划在方法级别启用/禁用任务,java,spring-boot,scheduled-tasks,Java,Spring Boot,Scheduled Tasks,我按照这个指南开始在SpringBoot中安排任务 我想在同一个类中为不同的任务添加更多的方法,想知道是否可以通过属性和@ConditionalOnProperty在方法级别上启用/禁用任务,似乎@ConditionalOnProperty只在类级别上工作,而不是在方法级别上工作(根据下面的代码示例,它不工作). 有其他办法吗?或者必须创建另一个包含task 2的类才能分别禁用/启用它们 @Component public class SchedulingTasks { pr
@ConditionalOnProperty
在方法级别上启用/禁用任务,似乎@ConditionalOnProperty
只在类级别上工作,而不是在方法级别上工作(根据下面的代码示例,它不工作). 有其他办法吗?或者必须创建另一个包含task 2的类才能分别禁用/启用它们
@Component
public class SchedulingTasks {
private static final Logger log = LoggerFactory.getLogger(SchedulingTasks.class);
@Scheduled(fixedRate = 50000)
public void jobOne() {
log.info("job one started at {}", LocalDateTime.now());
}
@Scheduled(fixedRate = 50000)
@ConditionalOnProperty(name="job.two", havingValue="true")
public void jobTwo() {
log.info("just two started at {}", LocalDateTime.now());
}
}
您可以应用于方法和类型,但这似乎只适用于注册bean的方法(请参阅文档)
您应该创建单独的Bean,在其中可以控制@ConditionalOnProperty的注册,然后将注释应用于Bean中的方法
例如:
@Slf4j
@服务
@ConditionalOnProperty(prefix=“schedule”,name={“job.one”},havingValue=“true”)
公共类JobOneScheduler{
@已计划(cron=“*/2*****”)
public void runJob(){
debug(“正在运行作业一…{}”,LocalDateTime.now());
}
}
@Slf4j
@服务
@ConditionalOnProperty(prefix=“schedule”,name={“job.two”},havingValue=“true”)
公共类JobTwoScheduler{
@已计划(cron=“*/5*****”)
public void runJob(){
debug(“正在运行作业二…{}”,LocalDateTime.now());
}
}
application.properties:
schedule.job.one=true
schedule.job.two=false
我只想创建单独的类。在
app.properties
文件中是否有job.two=true
?是的,我在application.properties文件中有job.two=false,但是这两种方法都会记录信息。使用相同的属性设置,如果在类级别上移动@ConditionalOnProperty注释,这两个方法都不会记录信息。只有当@ConditionalOnProperty
返回@Bean
时,才能将其用作方法级别的注释