Spring quartz定时器xml配置方式 biu biu biu
-
我是一个将近3年的程序员,但是我知道我是如何划水的,所以可想而知我还是一个菜鸟级别的选手,但是亡羊补牢为时不晚,奋发图强把!
-
我是菜鸟所以自然知道这种级别最需要什么!!!不多说上代码!!!
-
查看项目里有没有quartz的jar包没有抓紧引入一个,如下图:(版本不过多赘述了)
-
引入完后恭喜你进入下一个环节,创建一个xml文件,当然命名最好规范了例如Spring-time.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:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context"
xmlns:lang="http://www.springframework.org/schema/lang" xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:mybatis-spring="http://mybatis.org/schema/mybatis-spring"
xmlns:util="http://www.springframework.org/schema/util" xmlns:cache="http://www.springframework.org/schema/cache"
xmlns:p="http://www.springframework.org/schema/p" xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang-3.2.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.2.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd
http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache-3.2.xsd
http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring-1.2.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd">
- 再然后加入,总调度,用于启动定时器, 记住这一行代码是你定义的定时器的名称其余的代码全粘贴固定不变的!!
<!-- 总调度,用于启动定时器 -->
<bean id="defaultQuartzScheduler" lazy-init="false" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="overwriteExistingJobs" value="true" />
<property name="schedulerName" value="defaultQuartzScheduler" />
<!-- 指定quartz配置文件 -->
<property name="configLocation" value="classpath:quartz.properties" />
<!--必QuartzScheduler 延时启动,应用启动完后 QuartzScheduler 再启动,单位秒 -->
<property name="startupDelay" value="1" />
<!-- 设置自动启动 -->
<property name="autoStartup" value="true" />
<property name="applicationContextSchedulerContextKey" value="applicationContextKey" />
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="triggers">
<list>
<ref bean="backupTimeJobTrigger"/>
</list>
</property>
</bean>
- 这时候你就可以一个写java的类,类里面写上你要定时触发业务逻辑代码!记住实现这2个接口
- 最后一步了大兄弟,那就是xml配置下几点几点触发!这应该都能看懂吧? value那里面更换你写的java类,上面的id是自己起的名字,然后在下一个bean里面id也是自己起的然后ref引用的是上面那个bean的id,最后cron表达式,这个表达式就不赘述了.上百度查cron表达式有个生成器!
<bean id="backupTimeJobJob" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
<property name="jobClass" value="com.sgai.sample.job.BackupTimeJob"></property>
<!-- 必须设置为true,如果为false,当没有活动的触发器与之关联时会在调度器中会删除该任务 -->
<property name="durability" value="true" />
<!-- 当Quartz服务被终止后,再次启动或者集群中的其他机器接受任务时候会尝试恢复之前失败的任务 -->
<property name="requestsRecovery" value="true" />
</bean>
<bean id="backupTimeJobTrigger"
class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="backupTimeJobJob"></property>
<!-- 0 0 5 1 * ? 每天早上5点执行/ 0 */1 * * * ? 一分钟执行一次-->
<property name="cronExpression" value="0 */1 * * * ?"></property>
8.然后把第二个bean的id引入,哈哈然后就OK了!!!
有个大哥给我讲过,搞技术越是不会越要去研究他否则你不适合干程序员!!!当然遇到问题可以加群我自己建的共同进步: