宣传旅游网站建设,申京效率值联盟第一,wordpress 物流插件,阳江企业网站WEB项目中需要加入一个定时执行任务#xff0c;可以使用Quartz来实现#xff0c;由于项目就一个定时任务#xff0c;所以想简单点#xff0c;不用去配置那些Quartz的配置文件#xff0c;所以就采用了Spring Scheduled注解来实现了定时任务。在这里做个备注。 spring配置文… WEB项目中需要加入一个定时执行任务可以使用Quartz来实现由于项目就一个定时任务所以想简单点不用去配置那些Quartz的配置文件所以就采用了Spring Scheduled注解来实现了定时任务。在这里做个备注。 spring配置文件 xmlns中加入一段 xmlns:taskhttp://www.springframework.org/schema/task 然后xsi:schemaLocation多加下面的内容: http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-3.1.xsd 配置文件中启动TASK注解 task:annotation-driven/ context:annotation-config/ context:component-scan base-packagecom.xx.xx/ 编写JAVA代码 Component
public class ScheduledTaskManager {/*** cron表达式* * * * * *共6位使用空格隔开具体如下* cron表达式*(秒0-59) *(分钟0-59) *(小时0-23) *(日期1-31) *(月份1-12或是JAN-DEC) *(星期1-7或是SUN-SAT)*//*** 定时卡点计算。每天凌晨 02:00 执行一次*/Scheduled(cron 0 0 2 * * *)public void autoCardCalculate() {System.out.println(定时卡点计算... new Date());}/*** 心跳更新。启动时执行一次之后每隔1分钟执行一次*/Scheduled(fixedRate 1000*60*1)public void heartbeat() {System.out.println(心跳更新... new Date());}} Scheduled有两种方式cron表达式和fixedRate 两种都可以定时每隔一段时间执行个人觉得两种方式区别是fixedTate方式是应用启动时候会先执行一次cron表达式能配置更加复杂的情况。 个人使用中出现了2个问题 1.项目启动时候会报出No qualifying bean of type [org.springframework.scheduling.TaskScheduler] is defined异常信息 解决这个错误问题其实是debug级别输出就是不影响定时任务的使用在网上看到别人有这样解释 Spring的定时任务调度器会尝试获取一个注册过的 task scheduler来做任务调度它会尝试通过BeanFactory.getBean的方法来获取一个注册过的scheduler bean获取的步骤如下 a.尝试从配置中找到一个TaskScheduler Bean b.寻找ScheduledExecutorService Bean c.使用默认的scheduler 前两步如果找不到的话就会以debug的方式抛出异常 分别是 logger.debug(Could not find default TaskScheduler bean, ex); logger.debug(Could not find default ScheduledExecutorService bean, ex); 所以日志中打印出来的两个异常根本不是什么错误信息也不会影响定时器的使用只不过是spring的自己打印的一些信息罢了 如果想去掉这个输出可以在log4j配置文件中增加一行即可 log4j.logger.org.springframework.scheduling INFO 2.发现定时任务每次执行都会执行两次 这个问题后来发现是由于Spring的配置文件被加载了两次造成的listener和DispatcherServlet都会初始化spring配置文件所有注释掉listener即可 context-paramparam-namecontextConfigLocation/param-nameparam-valueclasspath:config/application-context.xml/param-value/context-param!-- Spring监听器 --!--listenerlistener-classorg.springframework.web.context.ContextLoaderListener/listener-class/listener--!-- servlet设置,将所有请求接到org.springframework.web.servlet.DispatcherServlet进行处理 --servletservlet-namespring/servlet-nameservlet-classorg.springframework.web.servlet.DispatcherServlet/servlet-classinit-paramparam-namecontextConfigLocation/param-nameparam-valueclasspath:config/application-context.xml/param-value/init-paramload-on-startup1/load-on-startup/servlet 转载于:https://www.cnblogs.com/lylife/p/5977574.html