java - 使用属性文件禁用调度

标签 java spring configuration scheduled-tasks

我想通过外部配置文件禁用 spring 调度。我已经设置了配置文件,并且下面示例中的任务会输出以下内容。 INFO MainTaskScheduler:36 - 计划任务:更新已转换的预订为 false。 所以我大部分时间都在那里。

我希望实现的是不必在每个任务方法中放入逻辑来确定是否已启用调度属性。

我的配置文件中有这样的内容(这不是有效的代码) @EnableScheduling(${enable.scheduling})

我的工作片段


应用配置

@Configuration
@EnableTransactionManagement
@EnableScheduling
@ComponentScan( /*etc*/})
public class AppConfiguration {

}

MainTaskScheduler

@Component
public class MainTaskScheduler {

    private Logger log = LoggerFactory.getLogger(getClass());

    @Value("${enable.scheduling}")
    private Boolean enableScheduling;

    @Scheduled(fixedRate=300) // every 5 minutes -- check if any existing quotes have been converted to bookings
    public void updateConvertedBookings() {
        log.info("scheduled task: Update converted bookings "+enableScheduling);
        // logic for class here
    }
}

application.properties

enable.scheduling=false

最佳答案

如果您使用的是 Spring Boot,可以使用 @ConditionalOnExpression 注解来启用或禁用调度:

@ConditionalOnExpression("'${enable.scheduling}'=='true'")

关于java - 使用属性文件禁用调度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29254932/

相关文章:

java - Mockito Rest 终点测试 - 将列表与报价进行比较

Hibernate 挂起或抛出延迟初始化没有 session 或 session 已关闭

java - Azure OAuth2 : can't validate access token

ruby - 跨网站和 gem 客户端处理用户身份验证的最佳方式

c++ - 是否有用于配置应用程序的标准 session 层协议(protocol)?

java - Spring 注解扫描优化

java - 避免Hessian登录catalina.out

java - "do while"出现问题

java.lang.ClassNotFoundException : it. geosolutions.jaiext.range.Range

java - 输入exit后如何返回主菜单