一、前言

      在做.Net的项目的时候,小编使用过Quartz.Net模块,当接触了java后,发现做相关的定时任务的时候也有对应的Quartz依赖。使用方式也很一致,小编就对这个进行一个对比学习。

二、使用方式

2.1 添加maven依赖

<properties>
    <quartz.version>2.2.1</quartz.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context-support</artifactId>
    </dependency>
    <!--spring-tx包必须导入,因为Quartz需要依赖该包-->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-tx</artifactId>
    </dependency>
    <!--Quartzframework-->
    <dependency>
        <groupId>org.quartz-scheduler</groupId>
        <artifactId>quartz</artifactId>
        <version>${quartz.version}</version>
    </dependency>
</dependencies>

2.2 创建定时类

      在service层中新建一个包,包名为task,与service同级别,假设咱们这个类叫做MyJob

/**
*Createdby Ares 2017-07-18.
*/
@Component
Public class ExamManagerServiceImpl{

    public void sendWeChatMessagesTimedPush(){
        System.out.println("这里是我们的任务代码!!!!");
    }
}

2.3 配置spring的配置文件

      结合spring,如果是没有使用spring 4的注解的,就必不可少要用配置文件操作了。这里小编使用的是配置文件,需要做相关的包扫描:

      因为我们之前的配置文件中已经配置了包扫描,所以现在不用再配置,如果是一个新包,那么请在本配置文件中配置包扫描

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


    <!--要调度的对象-->
    <bean id="examManagerServiceImpl" class="com.dmsdbj.itoo.examinationEvaluation.service.impl.ExamManagerServiceImpl" />
    <bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        <property name="targetObject" ref="examManagerServiceImpl" />
        <property name="targetMethod" value="sendWeChatMessagesTimedPush" />
        <!--将并发设置为false-->
        <property name="concurrent" value="false" />
    </bean>


    <!--创建CronTrigger触发器-->
    <bean class="org.springframework.scheduling.quartz.CronTriggerFactoryBean" id="cronTriggerWeChatMessage">
        <!--引用任务-->
        <property name="jobDetail" ref="jobDetail"/>
        <!--指定Cron表达式-->
        <property name="cronExpression" value="0/30 * * * * ?"/>
    </bean>


    <!--  总管理类如果将lazy-init='false'那么容器启动就会执行调度程序   -->
    <bean id="startQuertz" class="org.springframework.scheduling.quartz.SchedulerFactoryBean" lazy-init="false" >
        <property name="triggers">
            <list>
                <!--作业调度器,list下可加入其他的调度器-->
                <ref bean="cronTriggerWeChatMessage" />
            </list>
        </property>
    </bean>

</beans>

三、友情链接


【Quartz】定时任务(一)——Quartz.NET使用



【微信】微信消息定时推送


四、小结

      无论任何语言,都是相通的,操作都是一样的,深刻理解实现的方式才是最终的目的。