当前位置: 首页 > 知识库问答 >
问题:

使Spring Boot cron任务可配置

陆臻
2023-03-14

Spring Boot允许您创建后台“类似cron”的任务,如下所示:

@Component
public class MyTask {
    // Every hour on the hour
    @Scheduled(cron = "0 0 0/1 1/1 * ? *")
    public void doSomething() {
        // blah whatever
    }
}

这使得自动集成测试有点困难!我不应该让一个正在运行的集成测试挂起一个小时,等着看当我的任务在一个小时内运行时会发生什么。我也不应该等到临近小时时才运行测试,这样我就可以在最忙的时候确认正确的行为!

有没有办法使这些cron值可配置?这样,如果我想在“测试模式”下运行我的应用程序,我可以安排MyTask#doSomething()方法运行,比如说,每30秒运行一次,等等。

共有2个答案

司徒俊雄
2023-03-14

您可以注释:

@Profile("!test")
@Component
public class MyTask {

那么测试应用程序属性应该包含:

spring:
  profiles: test

这将禁用测试模式下的任务执行。

我会将任务执行的代码移动到一个单独的方法并单独测试它,而无需调度/等待。

严瀚昂
2023-03-14

您可以像这样配置cron表达式

@Scheduled(cron ="${some.trigger}") 

您可以从应用程序中设置此值。开发/产品配置文件的属性。在测试模式下,您可以使用特定于配置文件的属性文件将其设置为您想要的任何值,例如应用程序测试。属性

 类似资料:
  • 您可以在Gruntfile.js file为Grunt定义项目特定的配置数据。 Grunt配置 可以使用grunt.initConfig()方法在grunt.initConfig()初始化任务配置数据。 在grunt.initConfig()函数内部,从package.json文件中获取配置信息。 配置将包含名为properties和任意数据的任务。 grunt.initConfig({ j

  • 定义一个配置 在配置文件 .sbt这章已经将了如何定义个配置,大部分配置定义在Default中 配置有三种类型,其中SettingKey和TaskKey已经在配置文件 .sbt介绍了,InputKey在任务配置的输入章节介绍。 对于配置的一些例子: val scalaVersion = settingKey[String]("The version of Scala used for buildi

  • 我使用的Gretty示例来自:https://github.com/gretty-gradle-plugin/gretty-sample在主build.gradle我只修改了存储库URL(使用镜像回购由于代理): 建造。格雷德尔: 您可以看到端口被指定为: httpPort=8011 在子项目部分。当我运行Gradle时 格雷德卢:农场跑步 它报告: 因此,jetty仍在尝试使用默认端口8080。

  • 我正在尝试将Gradle插件中的一些任务配置从Groovy转换为Kotlin。我发现的所有示例都是关于普通构建脚本的,这种方法似乎并没有直接转化为插件的使用。我的尝试如下: 产生以下错误: 类型不匹配:推断类型是()- 做这件事的正确方法是什么?

  • 本文档主要介绍 Data Migration (DM) 的任务基础配置文件,包含关键概念 关于包括 source-id 和 DM-worker ID 在内的关键概念的介绍,请参阅关键概念。 基础配置文件示例 下面是一个基础的配置文件示例,通过该示例可以完成简单的数据迁移功能。 --- # ----------- 全局配置 ----------- ## ********* 基本信息配置 *****

  • 在这最后一章中,我们将回到:kv应用程序,给它添加一个路由层,使之可以根据桶的名字,在各个节点间分发请求。 路由层会接收一个如下形式的路由表: [{?a..?m, :"foo@computer-name"}, {?n..?z, :"bar@computer-name"}] 路由者(负责转发请求的角色,可能是个节点)将根据桶名字的第一个字节查这个路由表, 然后根据路由表所示将用户对桶的请求发给相应