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

spring@scheduled cron带变量

嵇财
2023-03-14

在我们的系统中,我们使用一个设置类来指向属性文件,这取决于它加载不同属性文件的eve。要访问特定属性,我们调用“设置”。getString('property_name_here')。

在我的代码中,我将@scheduled cron表达式加载到一个变量,并尝试将其传递给@scheduled注释,但它不起作用,

下面是我的代码:在属性文件中:

cron.second=0
cron.min=1
cron.hour=14

在我看来:

this.cronExpression = new StringBuilder()
            .append(settings.getString("cron.second"))
            .append(" ")
            .append(settings.getString("cron.min"))
            .append(" ")
            .append(settings.getString("cron.hour"))
            .append(" ")
            .append("*").append(" ").append("*").append(" ").append("*")
            .toString();

它创建了一个字符串“0114***”,这是一个有效的con表达式

在计划任务中,我有:

@Scheduled(cron = "${this.cronExpression}")
public void scheduleTask() throws Exception {
         ....
 }

当我运行代码时,它抱怨:原因:java.lang.IllegalStateExctive:遇到无效@计划的方法“计划任务”: Cron表达式必须由6个字段组成(在“${this.cron表达式}”中找到1)

然后我将this.cron表达式更改为字符串列表:

    this.cronExpression = Lists.newArrayList();
    this.cronExpression.add(settings.getString("cron.second"));
    this.cronExpression.add(settings.getString("cron.min"));
    this.cronExpression.add(settings.getString("cron.hour"));
    this.cronExpression.add("*");
    this.cronExpression.add("*");
    this.cronExpression.add("*");

但是仍然有相同的错误,那么cron表达式应该是什么?

共有1个答案

松和泰
2023-03-14

我所做的和它对我有用:

在属性文件中:

my.cron.expression=0 3 * * * ?

代码

@Scheduled(cron = "${my.cron.expression}")
public void scheduleTask(){
  ...
}
 类似资料:
  • 问题内容: 我正在使用Spring Boot开发应用程序。在REST控制器中,我更喜欢使用路径变量(注释)。我的代码获取了path变量,但它在网址中包含 {} 括号。请任何人建议我解决这个问题 网址 输出控制器 {约翰} 问题答案: 使用提交请求来代替。 您为路径变量赋予Spring值“ {john}” ,因此Spring通过“ {}”获得它 Web MVC框架 指出 URI模板模式 URI模板可

  • 我对应该在url中发送的变量中的斜线有一些问题。例如,id可能是这样的: 因为第一名的这个斜线,这是个问题。 在此之前,我对ID中间的斜杠有问题,但我用以下代码解决了这个问题: 但当斜杠放在第一位时,这不适用于这种情况。我还尝试使用RequestParam而不是PathVariable,但它在某些特殊字符方面存在问题,例如,当我使用RequestParam时,它会用空格替换“”,。。。 有谁能帮我

  • 所以我试图用th: href重定向整个网址,但它添加了我不想要的字符。 我现在的网址是这个 我试图回到帖子的一部分,那就是 所以现在这就是我的html的样子 这是我得到的网址 Id是正确的,但我不确定为什么

  • 问题内容: 是为了什么? 之间有什么区别? 和 问题答案: 使该变量可用于子流程。 那是, 表示变量名称可用于您从该Shell进程运行的 任何 进程。如果您希望进程使用此变量,请使用,然后从该Shell运行该进程。 表示变量作用域仅限于外壳程序,不适用于任何其他进程。您可以将其用于(例如)循环变量,临时变量等。 重要的是要注意,导出变量不会使其对父进程可用。也就是说,在生成的进程中指定和导出变量不

  • 我有两个项目。我用Angular2 cli构建的Angular2应用程序和只为Angular2应用程序服务的Spring Boot应用程序。我用构建Angular2应用程序,它会生成一个文件夹。然后,我将文件夹的内容放在Spring Boot应用程序的中。 我的Spring启动应用程序有两个文件。 Spring Boot应用程序类: 及其应用。属性文件: 它工作得很好,但是如果我转到一个url并点

  • 我想在我的sql-server数据库中插入。txt文件数据。我在.txt文件中使用和不使用PK-Variable时都出现了错误。我的疑问: 使用 从“C:\user\test.txt”大容量插入db.schema.table(FIELDTERMINATOR=';')去吧 null null