爬虫自动化20200719
自动爬虫使用了spring boot的Quartz定时任务方法。
本文学习借鉴了这篇博客,感谢 gnail_oug。
添加quartz依赖
在pom.xml的dependencies下添加一个quartz依赖
1 2 3 4 5
| <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-quartz</artifactId> </dependency>
|
编辑需要自动化的类
- 导入quartz包
- extends QuartzJobBean。
- override executeInternal method
1 2 3 4 5 6 7 8 9 10 11 12
|
import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.springframework.scheduling.quartz.QuartzJobBean;
public class ClassName extends QuartzJobBean{ @Override protected void executeInternal(JobExecutionContext context) throws JobExecutionException { } }
|
配置定时任务
- 创建config文件
- 标记 @Configuration
- 创建一个返回JobDetail类的方法
- 创建一个返回Triger类的方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
import com.bot.afvsr.services.impl.NewsServiceImpl; import org.quartz.*; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;
@Configuration public class QuartzConfig { @Bean public JobDetail saveNews() { return JobBuilder.newJob(NewsServiceImpl.class).withIdentity("saveJsonData").storeDurably().build(); }
@Bean public Trigger saveNewsTrigger1() { SimpleScheduleBuilder scheduleBuilder = SimpleScheduleBuilder.simpleSchedule() .withIntervalInMinutes(10) .repeatForever(); return TriggerBuilder.newTrigger().forJob(saveNews()) .withIdentity("saveJsonData") .withSchedule(scheduleBuilder) .build(); } }
|
小总结
这里只有方法,没有解释,停留在知其然不知其所以然的层面上,未来有机会再深究其内部运行机制。