# SpringBootDemo3 **Repository Path**: hao622/SpringBootDemo3 ## Basic Information - **Project Name**: SpringBootDemo3 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-05-03 - **Last Updated**: 2021-05-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 实验三 全球新型冠状病毒实时数据统计应用程序的设计与实现 ## 一、实验目的 1. 掌握使用Spring框架自带的RestTemplate工具类爬取网络数据; 2. 掌握使用Spring框架自带的计划任务功能; 3. 掌握使用Apache Commons CSV组件解释CSV文件; 4. 掌握Java 8的Stream API处理集合类型数据; 5. 了解使用模板引擎或前端框架展示数据。 ## 二、实验环境 1. JDK 1.8或更高版本 2. Maven 3.6+ 3. IntelliJ IDEA 4. commons-csv 1.8+ ## 三、实验任务 1. 通过IntelliJ IDEA的Spring Initializr向导创建Spring Boot项目。 2. 添加功能模块:spring MVC、lombok、commons-csv等。 推荐使用commons-csv组件处理csv文件: ![image-20210427211929313](https://i.loli.net/2021/04/27/8GLlWb4FfOkMpaN.png) ![image-20210427212717865](https://i.loli.net/2021/04/27/zgVYuwXtAZmsvqN.png) ​ Apache Commons CSV 官方用户指南: ​ https://commons.apache.org/proper/commons-csv/user-guide.html 3. 爬取全球冠状病毒实时统计数据。(Java,Spring) ​ 在Github上,有一个由约翰·霍普金斯大学系统科学与工程中心(JHU CSSE)运营的2020年新型冠状病毒可视化仪表板的数据仓库,大家可以从该仓库中爬取全球新型冠状病毒最新的统计数据。 ​ [Github仓库地址](https://github.com/CSSEGISandData/COVID-19) ​ 该仓库会把全球新型冠状病毒最新的统计数据汇总到一个csv文件上,大家在爬取数据时,获取这个csv文件即可。 ​ [Github仓库的csv文件地址](https://github.com/CSSEGISandData/COVID-19/blob/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_confirmed_global.csv) 4. 爬取数据和编写model类 使用Spring框架自带的计划任务功能定时更新统计数据。 要实现计划任务,首先通过在配置类上添加 ==@EnableScheduling== 注解来开启对计划任务的支持,然后在要执行计划任务的方法上注解 ==@Scheduled==,声明这是一个计划任务。 其中 @Scheduled 注解中有以下几个参数: 1. cron:cron表示式,指定任务在特定时间执行; 2. fixedDelay:表示上一次任务执行完成后多久再次执行,参数类型这long,单位ms; 3. fixedDelayString:与fixedDelay含义一样,只是参数类型变为String; 4. fixedRate:表示按一定的频率执行任务,参数类型为long,单位ms; 5. fixedRateString: 与fixedRate的含义一样,只是将参数类型变为String; 6. initialDelay:表示延迟多久后再第一次執行任務,参数类型为long,單位ms; 7. initialDelayString:与initialDelay的含义一样,只是参数类型变为String; 8. zone:时区,默认为当前时区,一般不需要设置。 ![image-20210503174116301](https://i.loli.net/2021/05/03/LBU5q2NMEV1vATK.png) ![image-20210503174156384](https://i.loli.net/2021/05/03/PuUbhWkATcZ67Yt.png) 5. 解析数据 ![image-20210503174230778](https://i.loli.net/2021/05/03/HBY1rCzVlUpS654.png) 6. 单元测试 ![image-20210503180247417](https://i.loli.net/2021/05/03/3Zd7xqGyrObXFEW.png) ![image-20210503180302243](https://i.loli.net/2021/05/03/KAWM2RNqapTCrm4.png) 7. Controller 控制器必须支持查询功能。如:可以选择查询某个地区或国家的新型冠状病毒实时统计数据。 **提示:** 1. 使用Java 8的Stream API可以很方便地访问集合类型对象,如:List ; 2. parallelStream支持并行流,可以大大提升访问性能; 3. filter方法支持设置过滤条件; 4. Collectors.toList() 流变成List集合。 ![image-20210503180548235](https://i.loli.net/2021/05/03/a2uRVEZMbkoOdx1.png) 8. 页面展示 ![image-20210503180825442](https://i.loli.net/2021/05/03/oeD1VHFmwSLrQCP.png) 查询: 比如China ![image-20210503180856901](https://i.loli.net/2021/05/03/NOwHze3qCoaKS9B.png)