需要jar包,maven依赖
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-jobs</artifactId>
<version>2.2.1</version>
</dependency>
spring 配置
<!-- 定时任务 -->
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<!-- 系统释放奖品 -->
<ref bean="releasePrizeTrigger"/>
<!-- 重置抽奖和邀请次数 -->
<ref bean="resetCountTrigger"/>
</list>
</property>
<property name="autoStartup" value="true"/>
</bean>
<bean id="releasePrizeTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="releasePrizeJobDetail"/>
<property name="cronExpression" value="* * */2 * * ?"/><!-- 每隔2小时触发一次 -->
</bean>
<bean id="resetCountTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="resetCountJobDetail"/>
<property name="cronExpression" value="59 59 23 * * ?"/><!-- 每天23:59:59点触发一次 -->
</bean>
<bean id="releasePrizeJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="releasePrizeJob"/>
<property name="targetMethod" value="executeTask"/>
<property name="concurrent" value="false"/>
<!-- 是否允许任务并发执行。当值为false时,表示必须等到前一个线程处理完毕后才再启一个新的线程 -->
</bean>
<bean id="resetCountJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="resetCountJob"/>
<property name="targetMethod" value="executeTask"/>
<property name="concurrent" value="false"/>
</bean>
<bean id="releasePrizeJob" class="com.taoshou.service.quartz.ReleasePrizeJob"/>
<bean id="resetCountJob" class="com.taoshou.service.quartz.ResetCountJob"/>