SpringBoot定时任务
feifei97 人气:0SpringTask
SpringTask是Spring自主研发的轻量级定时任务工具,相比于Quartz更加简单方便,且不需要引入其他依赖即可使用。
SpringTask的配置
在配置类中添加一个@EnableScheduling注解即可开启SpringTask的定时任务
import org.apache.commons.lang3.concurrent.BasicThreadFactory; @Configuration @EnableScheduling @ComponentScan(basePackages = {"com.xxx.xxx"}) public class TaskConfig implements SchedulingConfigurer { @Override public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { taskRegistrar.setScheduler(taskExecutor()); } @Bean public Executor taskExecutor() { return new ScheduledThreadPoolExecutor(20, new BasicThreadFactory.Builder().namingPattern("Job-Thread-%d").build()); } }
设置定时任务
@Component @Slf4j public class TaskJob { /** * @Scheduled 设置 */ @Scheduled(cron = "0/10 * * * * ?") public void job1() { //具体处理逻辑 log.info("【job1】开始执行:{}", DateUtil.formatDateTime(new Date())); } }
Cron的语法格式及说明
Seconds Minutes Hours DayofMonth Month DayofWeek
时间元素 | 可出现的字符 | 有效数值范围 |
---|---|---|
Seconds | , - * / | 0-59 |
Minutes | , - * / | 0-59 |
Hours | , - * / | 0-23 |
DayofMonth | , - * / ? L W | 0-31 |
Month | , - * / | 1-12 |
DayofWeek | , - * / ? L # | 1-7或SUN-SAT |
Cron格式中特殊字符说明
字符 | 作用 | 举例 |
---|---|---|
, | 列出枚举值 | 在Minutes域使用5,10,表示在5分和10分各触发一次 |
- |表示触发范围| 在Minutes域使用5-10,表示从5分到10分钟每分钟触发一次
- |匹配任意值| 在Minutes域使用*, 表示每分钟都会触发一次
/ |起始时间开始触发,每隔固定时间触发一次| 在Minutes域使用5/10,表示5分时触发一次,每10分钟再触发一次
? |在DayofMonth和DayofWeek中,用于匹配任意值| 在DayofMonth域使用?,表示每天都触发一次
|在DayofMonth中,确定第几个星期几| 1#3表示第三个星期日
L |表示最后| 在DayofWeek中使用5L,表示在最后一个星期四触发
W |表示有效工作日(周一到周五)| 在DayofMonth使用5W,如果5日是星期六,则将在最近的工作日4日触发一次
使用举例
"0 0 10,14,16 * * ?" 每天上午10点,下午2点,4点 "0 0/30 9-17 * * ?" 朝九晚五工作时间内每半小时 "0 0 12 ? * WED" 表示每个星期三中午12点 "0 0 12 * * ?" 每天中午12点触发 "0 15 10 ? * *" 每天上午10:15触发 "0 15 10 * * ?" 每天上午10:15触发 "0 15 10 * * ? *" 每天上午10:15触发 "0 15 10 * * ? 2005" 2005年的每天上午10:15触发 "0 * 14 * * ?" 在每天下午2点到下午2:59期间的每1分钟触发 "0 0/5 14 * * ?" 在每天下午2点到下午2:55期间的每5分钟触发 "0 0/5 14,18 * * ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发 "0 0-5 14 * * ?" 在每天下午2点到下午2:05期间的每1分钟触发 "0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2:44触发 "0 15 10 ? * MON-FRI" 周一至周五的上午10:15触发 "0 15 10 15 * ?" 每月15日上午10:15触发 "0 15 10 L * ?" 每月最后一日的上午10:15触发 "0 15 10 ? * 6L" 每月的最后一个星期五上午10:15触发 "0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一个星期五上午10:15触发 "0 15 10 ? * 6#3" 每月的第三个星期五上午10:15触发 "30 * * * * ?" 每半分钟触发任务 "30 10 * * * ?" 每小时的10分30秒触发任务 "30 10 1 * * ?" 每天1点10分30秒触发任务 "30 10 1 20 * ?" 每月20号1点10分30秒触发任务 "30 10 1 20 10 ? *" 每年10月20号1点10分30秒触发任务 "30 10 1 20 10 ? 2011" 2011年10月20号1点10分30秒触发任务 "30 10 1 ? 10 * 2011" 2011年10月每天1点10分30秒触发任务 "30 10 1 ? 10 SUN 2011" 2011年10月每周日1点10分30秒触发任务 "15,30,45 * * * * ?" 每15秒,30秒,45秒时触发任务 "15-45 * * * * ?" 15到45秒内,每秒都触发任务 "15/5 * * * * ?" 每分钟的每15秒开始触发,每隔5秒触发一次 "15-30/5 * * * * ?" 每分钟的15秒到30秒之间开始触发,每隔5秒触发一次 "0 0/3 * * * ?" 每小时的第0分0秒开始,每三分钟触发一次 "0 15 10 ? * MON-FRI" 星期一到星期五的10点15分0秒触发任务 "0 15 10 L * ?" 每个月最后一天的10点15分0秒触发任务 "0 15 10 LW * ?" 每个月最后一个工作日的10点15分0秒触发任务 "0 15 10 ? * 5L" 每个月最后一个星期四的10点15分0秒触发任务 "0 15 10 ? * 5#3" 每个月第三周的星期四的10点15分0秒触发任务 "0 0 0 * * ?" 每天晚上12点触发任务
爬虫
使用webmagic开发爬虫
流程:
- (1)分析目标网页源码
- (2)继承PageProcessor接口编写自己的处理类,process是定制爬虫逻辑的核心接口,在这里编写抽取逻辑
- (3)继承Pipeline接口编写自己的存储类
代码:
加载全部内容