直接上代码吧:java
首先是pom文件须要添加:spring
<!-- 定时器相关包 --> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.3.0</version> </dependency>
而后是配置文件须要添加:ide
xmlns:task="http://www.springframework.org/schema/task"
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.1.xsd
而后开启定时器注解:code
<!-- 开启定时器注解 --> <task:annotation-driven/>
而后是代码里的使用:xml
/** *@description *@auth panmingshuai *@time 2018年4月2日下午10:29:09 * */ @Component public class PanTask { @Autowired private NothingService nothingService; // 每五秒执行一次 @Scheduled(cron = "0/5 * * * * ?") public void TaskJob() { System.out.println(nothingService.getStr()); } /** * cron表达式: * * corn从左到右(用空格隔开):秒 分 小时 月份中的日期 月份 星期中的日期 年份 * * 字段 容许值 容许的特殊字符 * 秒(Seconds) 0~59的整数 , - * / * 分(Minutes) 0~59的整数 , - * / * 小时(Hours) 0~23的整数 , - * / * 日期(DayofMonth) 1~31的整数(可是你须要考虑你月的天数) , - * ? / L W C * 月份(Month) 1~12的整数或者 JAN-DEC , - * / * 星期(DayofWeek) 1~7的整数或者 SUN-SAT (注:1=SUN) , - * ? / L C # * 年(可选,留空)(Year) 1970~2099 , - * / * (注:星期的值可为:1~7 1=SUN 或 SUN,MON,TUE,WED,THU,FRI,SAT) * * * 每个域都使用数字,但还能够出现以下特殊字符,它们的含义是: * (1)*:表示匹配该域的任意值。假如在Minutes域使用*, 即表示每分钟都会触发事件。 * (2)?:只能用在DayofMonth和DayofWeek两个域。它也匹配域的任意值,但实际不会。 * 由于DayofMonth和DayofWeek会相互影响。例如想在每个月的20日触发调度,无论20日究竟是星期几, * 则只能使用以下写法: 13 13 15 20 * ?, 其中最后一位只能用?,而不能使用*, * 若是使用*表示无论星期几都会触发,实际上并非这样。 * (3)-:表示范围。例如在Minutes域使用5-20,表示从5分到20分钟每分钟触发一次 * (4)/:表示起始时间开始触发,而后每隔固定时间触发一次。例如在Minutes域使用5/20,则意味着5分钟触发一次,而25,45等分别触发一次. * (5),:表示列出枚举值。例如:在Minutes域使用5,20,则意味着在5和20分每分钟触发一次。 * (6)L:表示最后,只能出如今DayofWeek和DayofMonth域。若是在DayofWeek域使用5L,意味着在最后的一个星期四触发。 * (7)W:表示有效工做日(周一到周五),只能出如今DayofMonth域,系统将在离指定日期的最近的有效工做日触发事件。 * 例如:在 DayofMonth使用5W,若是5日是星期六,则将在最近的工做日:星期五,即4日触发。若是5日是星期天, * 则在6日(周一)触发;若是5日在星期一到星期五中的一天,则就在5日触发。另一点,W的最近寻找不会跨过月份 。 * (8)LW:这两个字符能够连用,表示在某个月最后一个工做日,即最后一个星期五。 * (9)#:用于肯定每月第几个星期几,只能出如今DayofMonth域。例如在4#2,表示某月的第二个星期三。 * * * 3、经常使用表达式例子 * (1)0 0 2 1 * ? * 表示在每个月的1日的凌晨2点调整任务 * (2)0 15 10 ? * MON-FRI 表示周一到周五天天上午10:15执行做业 * (3)0 15 10 ? * 6L 2002-2006 表示2002-2006年的每月的最后一个星期五上午10:15执行做 * (4)0 0 10,14,16 * * ? 天天上午10点,下午2点,4点 * (5)0 0/30 9-17 * * ? 朝九晚五工做时间内每半小时 * (6)0 0 12 ? * WED 表示每一个星期三中午12点 * (7)0 0 12 * * ? 天天中午12点触发 * (8)0 15 10 ? * * 天天上午10:15触发 * (9)0 15 10 * * ? 天天上午10:15触发 * (10)0 15 10 * * ? * 天天上午10:15触发 * (11)0 15 10 * * ? 2005 2005年的天天上午10:15触发 * (12)0 * 14 * * ? 在天天下午2点到下午2:59期间的每1分钟触发 * (13)0 0/5 14 * * ? 在天天下午2点到下午2:55期间的每5分钟触发 * (14)0 0/5 14,18 * * ? 在天天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发 * (15)0 0-5 14 * * ? 在天天下午2点到下午2:05期间的每1分钟触发 * (16)0 10,44 14 ? 3 WED 每一年三月的星期三的下午2:10和2:44触发 * (17)0 15 10 ? * MON-FRI 周一至周五的上午10:15触发 * (18)0 15 10 15 * ? 每个月15日上午10:15触发 * (19)0 15 10 L * ? 每个月最后一日的上午10:15触发 * (20)0 15 10 ? * 6L 每个月的最后一个星期五上午10:15触发 * (21)0 15 10 ? * 6L 2002-2005 2002年至2005年的每个月的最后一个星期五上午10:15触发 * (22)0 15 10 ? * 6#3 每个月的第三个星期五上午10:15触发 */ }
关于cron表达式的写法注释里已经很详细,项目启动后能够看到每一个5秒执行一次任务.nothingService以下:事件
/** * @author panmingshuai * @description * @Time 2018年3月13日 下午4:53:25 * */ public interface NothingService { String getStr(); }
/** * @author panmingshuai * @description * @Time 2018年3月13日 下午4:54:55 * */ @Service public class NothingServiceImpl implements NothingService { @Override public String getStr() { return "123456gdf"; } }
完毕ip