一、前言
在做.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使用
【微信】微信消息定时推送
四、小结
无论任何语言,都是相通的,操作都是一样的,深刻理解实现的方式才是最终的目的。