设置定时器,在一定周期内执行固定的任务。Quartz就起到了这样的作用。
针对于Spring开发,在配置文件中配置定时器。
-
创建任务对象,配置执行任务的bean
-
指定定时任务需要执行的方法
-
设置定时任务执行时间
-
启动定时任务
-
源码
import java.util.Date; import java.util.List; import javax.annotation.Resource; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import com.lms.sch.dao.CommodityDao; import com.lms.sch.dao.MessageDao; import com.lms.sch.entity.Commodity; import com.lms.sch.entity.Message; import com.lms.sch.util.MyBatisUtil; /** * * @ClassName: SendMessageJob * @Description: 周期性执行任务 * @author 雨ゆこ * * */ @Component public class SendMessageJob { @Autowired private MessageDao messageDao; @Autowired public CommodityDao commodityDao; public void autoCheakCommodity(){ Commodity commodity = new Commodity(); commodity.setcNumber(100); List<Commodity> findCommodityByNumber = commodityDao.findCommodityByNumber(commodity); System.out.println(messageDao); Message message = new Message(); message.setmStatus(0); message.setmType(1); message.setmTime(new Date()); for(Commodity c:findCommodityByNumber){ message.setmContent(c.getWarehouse().getwNumber()+"号仓库的"+c.getcName()+"商品当前只剩"+c.getcNumber()+"件,请及时补充"); messageDao.insertMessage(message); }; } }
<!-- 周期性任务 --> <!--1.創建任務對象 --> <bean id="sendMessageJob" class="com.lms.sch.listener.SendMessageJob"> <property name="messageDao" ref="messageDao"/> <property name="commodityDao" ref="commodityDao"/> </bean> <!-- jobDetail --> <!-- 配置需要執行的任務的方法 --> <bean id="aloneJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject"> <ref bean="sendMessageJob" /> </property> <property name="targetMethod"> <value>autoCheakCommodity</value> </property> </bean> <!-- trigger --> <!-- 設置定時時間 --> <bean id="aloneTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> <property name="jobDetail" ref="aloneJobDetail"></property> <property name="cronExpression" value="0/20 * * * * ?"></property> </bean> <!-- schedule factory --> <!-- 啟動定時任務 --> <bean id="SpringJobSchedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="aloneTrigger" /> </list> </property> </bean>