定时任务3

要在spring 中利用quartz调度任务;需要配置三个bean

     1、制定任务信息 bean

  •   ① 设置执行对象
  •    ② 设置执行对象中对应的执行方法
  •    ③ 是否可以同步执行
  •  
  • 2、制定任务执行时机(执行触发器) bean
  •    2.1、简单触发器(SimpleTrigger)
  •    ① 设置任务详细
  •    ② 设置任务延迟执行时间
  •    ③ 设置任务执行频率
  •  
  •    2.2、任务触发器(CronTrigger)
  •    ① 设置任务详细
  •    ② 设置执行时机(cronExpression)
  •     cronExpression:秒 分 时 日 月 周 年(可选)
  •  
  • 3、设置任务调度工厂 bean
  •    设置触发器们

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
	xmlns:aop="http://www.springframework.org/schema/aop" xmlns:util="http://www.springframework.org/schema/util"
	xmlns:tx="http://www.springframework.org/schema/tx" xmlns:task="http://www.springframework.org/schema/task"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
	http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
	http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
	http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
	http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd
	http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd"
	default-lazy-init="false">
 
 
	<!-- 定义目标bean和bean中的方法 -->  
    <!-- =====================日常任务job========================== -->
    <!-- 第一步:注册一个普通的bean文件 -->
    <bean id="MyTask" class="com.example.demo.AutoTask">
    </bean>  
    <bean id="MyTask1" class="com.example.demo.AutoTask">
    </bean>  
     
     
     <!-- 第二步:制定任务信息 -->
    <bean id="MyTaskMethod" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">  
       <!-- 设置执行的对象 -->
        <property name="targetObject">  
            <ref bean="MyTask"/>  
        </property>  
        <!-- 设置执行对象中执行的方法 -->
        <property name="targetMethod">  <!-- 要执行的方法名称 -->  
            <value>execute</value>  
        </property>  
    </bean> 
    
    <!-- 同上 -->
    <bean id="MyTaskMethod1" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">  
        <property name="targetObject">  
            <ref bean="MyTask1"/>  
        </property>  
        <property name="targetMethod">  <!-- 要执行的方法名称 -->  
            <value>auto</value>  
        </property>  
    </bean> 
    
   <!-- 第三步 任务调度触发器,主要用于定义  (第二步中的制定任务信息 步骤什么时候执行),主要用于定义MyTaskMethod什么时候执行-->
    <!-- ======================== 调度触发器 ======================== -->  
    <!-- 触发器最常用的有两种:简单触发器SimpleTrigger 和任务触发器CronTrigger 。
       	SimpleTrigger和jdk的timer类似,只能指定任务执行以什么样的频率执行,但无法制定精确的执行时间。
		CronTrigger则既可以执行简单触发器所制定的以频率来执行的时间,也可以制定复杂的时间计划来执行。如可制定:每个月的最后一天的15点来执行相关任务。 -->
		
  <bean id="DailyTaskCronTriggerBean" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">  
 		 <!-- 首先设置任务详情 -->
        <property name="jobDetail" ref="MyTaskMethod"></property>  
        <!-- 每分钟的第一秒触发   -->
        <!-- 设置任务延迟执行时间 -->
        <!-- 设置任务执行时机,cron表达式 -->
        <property name="cronExpression" value="1 * * * * ?"></property>
         <!-- 每小时的第一分钟触发  -->
       <!--  <property name="cronExpression" value="0 1 * * * ?"></property>  -->
    </bean>
      
  <bean id="DailyTaskCronTriggerBean1" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">  
        <property name="jobDetail" ref="MyTaskMethod1"></property>  
        <!-- 每分钟的第一秒触发   -->
        <property name="cronExpression" value="1 * * * * ?"></property>
         <!-- 每小时的第一分钟触发  -->
       <!--  <property name="cronExpression" value="0 1 * * * ?"></property>  -->
    </bean>  
    
     <!--第三步、设置调度工厂   schedulerFactory 任务调度工厂;用于调度各个任务触发器。 -->
    <!-- ======================== 调度工厂 ======================== -->  
    <bean id="SpringJobSchedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">  
        <property name="triggers">  
            <list>   
                <ref bean="DailyTaskCronTriggerBean"/> 
                <ref bean="DailyTaskCronTriggerBean1"/> 
            </list>  
        </property>  
    </bean>   
    
 
</beans>

第二步:类

package com.example.demo;


import java.lang.management.ManagementFactory;
import java.lang.management.MemoryMXBean;
import java.lang.management.MemoryUsage;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.Logger;
 
/**
 * ClassName: AutoTask <br/>
 * Function: TODO ADD FUNCTION. <br/>
 * Reason: TODO ADD REASON(可选). <br/>
 * date: 2016-5-23 上午10:13:40 <br/>
 * 
 * @author weber
 * @version
 * @since JDK 1.6
 */
public class AutoTask {
	private static  Logger logger = Logger.getLogger(AutoTask.class
			.getName());
 
	protected void execute() throws ParseException {
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		String date = format.format(new Date());
		System.out.println("这是第一个定时任务:" + date);
		logger.info("任务1:每分钟定时获取当前系统时间");
	}
 
	public void auto() {
		MemoryMXBean memoryMXBean = ManagementFactory.getMemoryMXBean();
		MemoryUsage memoryUsage = memoryMXBean.getHeapMemoryUsage(); //椎内存使用情况
		long totalMemorySize = memoryUsage.getInit(); //初始的总内存
		long maxMemorySize = memoryUsage.getMax(); //最大可用内存
		long usedMemorySize = memoryUsage.getUsed(); //已使用的内存
        System.out.println("这是第二个定时任务"+"\r"+"椎内存使用情况:"+"1.初始的总内存:"+totalMemorySize+"2.最大可用内存:"+maxMemorySize+"3.已使用的内存:"+usedMemorySize);
        logger.info("任务2:后台监控椎内存使用情况");
	}
 
}

 

 

 

第二步:pom.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.1.1.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.example</groupId>
	<artifactId>demo</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>
	<name>demo</name>
	<description>Demo project for Spring Boot</description>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot</artifactId>
            </dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-quartz</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<!-- <dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>1.3.2</version>
		</dependency> -->

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>
<dependency>
    <groupId>org.quartz-scheduler</groupId>
    <artifactId>quartz</artifactId>
    <version>2.2.3</version>
  </dependency>
  <dependency>
    <groupId>org.quartz-scheduler</groupId>
    <artifactId>quartz-jobs</artifactId>
    <version>2.2.3</version>
 </dependency>


</project>

第三步:建立application.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:scpan="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

    <!-- 会自动扫描com.example.demo下的所有包,包括子包下除了@Controller的类。 -->
    <scpan:component-scan base-package="com.example.demo">
    </scpan:component-scan>

    <!-- Spring中引入其他配置文件 -->
  <import resource="classpath:spring-quartz.xml" /> 
    
</beans>

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值