欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

定时任务

程序员文章站 2022-03-25 18:49:07
...

第一次写博客,有啥错误建议多多指正
**

定时任务实现的两种方式

**

1.xml配置方式


    <!-- 自动调度需要扫描的包 --> 
<context:component-scan base-package="com.thinkgem.jeesite.modules.api.web.khtx"/>

 <!-- 配置bean    -->
<bean id="CallRemindController" class="com.thinkgem.jeesite.modules.api.web.khtx.CallRemindController"></bean>```

<!-- 计划任务配置,用 @Component标注类
    <!-- 定时器开关 -->
    <task:executor id="executor" pool-size="10"/>
     <task:scheduler id="scheduler" pool-size="10"/>
         <!--配置启动定时器-->
    <task:annotation-driven scheduler="scheduler" executor="executor" proxy-target-class="true"/>
     <!-- 配置调度 需要在类名前添加 @Component --> 
	<task:scheduled-tasks>
		<task:scheduled ref="CallRemindController" method="saveMessage" cron="0 0 2 * * ?"/>
	/task:scheduled-tasks>


#### 1.1任务调度器的配置详细参数说明:

id属性用作线程池中线程的前缀名
task:scheduler/@pool-size:调度线程池的大小,调度线程在被调度任务完成前不会空闲
task:scheduled/@cron:cron表达式,注意,若上次任务未完成,即使到了下一次调度时间,任务也不会重复调度

上述定时器配置已经完成,接下来写入代码。

package com.thinkgem.jeesite.modules.api.web.khtx;

@Component
public class CallRemindController  {
    public void saveMessage(){
       system.out.printIn("定时任务完成了哦")
 }
 }

2.注解方式实现定时任务

<context:annotation-config />
	<!-- 自动调度需要扫描的包 --> 
	<context:component-scan base-package="com.thinkgem.jeesite.modules.api.web.khtx,com.thinkgem.jeesite.modules.bfrw.web" ></context:component-scan>
    <!-- 定时器开关 -->
        <task:executor id="executor" pool-size="10"/>
     <task:scheduler id="scheduler" pool-size="10"/>
    <task:annotation-driven executor="executor" scheduler="scheduler"/>

2.1启用定时任务需要在SpringBoot启动类上加上

@EnableScheduling

这个注解的作用是发现

@Scheduled

测试代码如下


@EnableScheduling
@@RestController
public class CallRemindController  {

@Scheduled   (cron ="0 0 2 * * ?")
    public void saveMessage(){
              system.out.printIn("定时任务完成了哦");
 }
}