注解类型:EnableScheduling @Target(value=TYPE) @Retention(value=RUNTIME) @Import(value=SchedulingConfiguration.class) @Documented public @interface EnableScheduling 使用该注解让Spring可以进行任务调度,功能类似于Spring的xml命名空间<task:*> 使用 @EnableScheduling 注解的类示例: @Configuration @EnableScheduling public class AppConfig { // 各种@bean的定义 // various @Bean definitions } 使用@Scheduled注解可以被Spring容器检测。使用示例: package com.myco.tasks; public class MyTask { @Scheduled(fixedRate=1000) public void work() { // 任务执行逻辑 // task execution logic } } 下面的配置使MyTask.work()每1000毫秒被执行一次: @Configuration @EnableScheduling public class AppConfig { @Bean public MyTask task() { return new MyTask(); } } 如果MyTask使用了@Component注解,下面的配置方式也可以让使用了@Scheduled注解的方法在设置的时间间隔里面被调用: @Configuration @ComponentScan(basePackages="com.myco.tasks") public class AppConfig { } 使用了@Scheduled注解方法也可以在使用了@Configuration注解的类里面使用: @Configuration @EnableScheduling public class AppConfig { @Scheduled(fixedRate=1000) public void work() { // task execution logic } } 上面介绍的都是在单线程的情况下执行任务调度的。如果希望进行更多的控制,我们可以让使用@Configuration注解的类实现SchedulingConfigurer接口,这样就可以访问底层的ScheduledRegistrar实例。 下面的例子演示如何定制Executer去执行任务计划: @Configuration @EnableScheduling public class AppConfig implements SchedulingConfigurer { @Override public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { taskRegistrar.setScheduler(taskExecutor()); } @Bean(destroyMethod="shutdown") public Executor taskExecutor() { return Executors.newScheduledThreadPool(100); } } 注意上面例子中使用的@bean(destroyMethod="shutdown")。这样是为了确保当Spring应用上下文关闭的时候任务执行者也被正确地关闭。实现SchedulingConfigurar接口还允许细粒度控制任务通过ScheduledTaskRegistrar进行登记。 例如,下面的配置使用自定义的Trigger执行bean的方法 @Configuration @EnableScheduling public class AppConfig implements SchedulingConfigurer { @Override public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { taskRegistrar.setScheduler(taskScheduler()); taskRegistrar.addTriggerTask( new Runnable() { public void run() { myTask().work(); } }, new CustomTrigger() ); } @Bean(destroyMethod="shutdown") public Executor taskScheduler() { return Executors.newScheduledThreadPool(42); } @Bean public MyTask myTask() { return new MyTask(); } } 作为参考,上面的例子和下面使用XML配置方式的作用是一样的: <beans> <task:annotation-driven scheduler="taskScheduler"/> <task:scheduler id="taskScheduler" pool-size="42"/> <task:scheduled ref="myTask" method="work" fixed-rate="1000"/> <bean id="myTask" class="com.foo.MyTask"/> </beans>
Spring注解方式实现任务调度【官方文档翻译】
转载上一篇:Unicode字符编码表
下一篇:程序员的“纪律性”

提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Spring注解方式实现任务调度
-SNAPSHOT/javadoc-api/ 注解类型:EnableScheduling 使用该注解让Spring可以进行任务调度
spring 任务调度 ide 任务计划 javad -
JavaSE实现任务调度的三种方式(十六)
>勿以恶小而为之,勿以善小而不为--------------------------刘备>>劝诸君,多行善事积福报,莫作恶主要内容: JavaSE 实现定时任务
定时任务 Thread实现定时任务 TimerTask实现定时任务 实现任务调度的三种方式 实现任务调度的方式 -
SpringBoot 定时器简单使用,实现任务调度
如果你想在springboot里面,想弄个简单的定时器,目标就是为了实现,
springBoot 定时器 @Scheduled spring 定时任务 -
Jetty官方文档翻译
最近
xml maven 嵌入式