我正在做一个春季启动项目。这是主要方法和控制器方法
@SpringBootApplication
@ComponentScan(basePackages="nokia.quartz")
@EnableScheduling
public class App
{
public static void main( String[] args )
{
ConfigurableApplicationContext context =SpringApplication.run(App.class, args);
}
}
控制器:
@RestController
public class Controller {
@Autowired
private SampleTask m_sampletask;
@RequestMapping(value = "start", method = RequestMethod.GET)
public void start() throws Exception {
m_sampletask.work();
}
}
一个Sample类
@Component
public class SampleTask {
String cron_expression="0 0/1 * * * ?";
public void work() {
System.out.println("");
}
}
这里的问题是,当我从休息端点“/ start”调用它时,其余的调用“/ start”应该使SampleTask work()方法成为具有给定cron表达式的调度作业。此外,我应该能够在运行时使用另一个休息端点配置它并停止它..
答案 0 :(得分:0)
@EnableScheduling
注释和@Scheduled(cron= 0 0/1 * * * ?)
的组合在Spring启动中创建调度程序。
请在App Class的开头添加@EnableScheduling
,并使用cron将@Scheduled
添加到要运行的方法。PFB是有用的链接。
https://spring.io/guides/gs/scheduling-tasks/
@Autowired TaskScheduler taskScheduler; ScheduledFuture<?> scheduledFuture; @RequestMapping(value = "start", method = RequestMethod.GET) public void start() throws Exception { scheduledFuture = taskScheduler.scheduleAtFixedRate(m_sampletask.work(), FIXED_RATE); }
@Component
public class SampleTask implements Runnable {
String cron_expression="0 0/1 * * * ?";
@Override public void run() { System.out.println("Hello"); }
}