定时任务

  • Post author:
  • Post category:其他


**



定时任务实现的两种方式

**




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("定时任务完成了哦");
 }
}



版权声明:本文为weixin_44890199原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。