java - Java Spring - 函数的动态调度
问题描述
我一直在尝试使用 Spring,但我是新手。我和我一起工作过Quartz
,我很清楚这一点。但目前我正在尝试在Spring
. 我试图每 5 秒调用一次方法,其中我的cron
模式来自database
. 虽然我能够设置cron
模式,但我不确定如何调用该函数。请指导。
代码:
package com.test;
import org.springframework.context.annotation.Bean;
import org.springframework.scheduling.TaskScheduler;
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
import org.springframework.scheduling.support.CronTrigger;
public class Innovation implements Runnable
{
public Innovation(TaskScheduler scheduler,String cron)
{
scheduler.schedule(this, new CronTrigger("* * * ? * *"));
}
public void test()
{
System.out.println("This is new scheduled every 5 seconds");
}
@Bean
public TaskScheduler taskScheduler() {
//org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler
return new ThreadPoolTaskScheduler();
}
public static void main(String[] args)
{
Innovation a=new Innovation(null, null);
}
@Override
public void run() {
// TODO Auto-generated method stub
}
}
解决方案
看起来您缺少测试方法上的@Scheduled注释。我也不确定您是否需要与现有代码一样多的代码-这是一个基本示例,显示了我如何使用它:
@PropertySource(("classpath:event.properties"))
@Component
public class SerialNumbersToNetSuite {
@Async
@Scheduled(cron = "${sn_db_to_ns}")
public void start() throws SQLException, IOException, ServiceException, SOAPException {
LOGGER.debug("Adding serial numbers...");
....
}
....
}
event.properties 有这样一行:
sn_db_to_ns = 0 0 */2 * * *
以防万一您错过了 cron 符号(或任何其他偶然发现此符号的人),这里是 cron 格式文档
推荐阅读
- python - Python Pandas 日期时间自定义 BQuarterEnd
- python - Python pandas dataframe pivot 仅适用于 pivot_table() 但不适用于 set_index() 和 unstack()
- elasticsearch - 弹性嵌套查询返回与条款完全匹配
- jhipster - 为微服务响应式蓝图添加更多选择
- android - Buildozer 不是为 android 构建的
- reactjs - React 动态改变状态列表异步问题
- node.js - 错误:超出配额(DNS 解析:每天)
- python - 在 Julia 中:如何获取当前正在运行的程序的名称?
- laravel - 使用负载均衡器和 TrustedProxies 在 Laravel 中 request() 不安全
- sql-server - SQL Server 中字段的 DATALENGTH 前 50 条记录