# 全球新型冠状病毒实时数据统计应用程序的设计与实现
**Repository Path**: Sakurazjp/springboot-project3
## Basic Information
- **Project Name**: 全球新型冠状病毒实时数据统计应用程序的设计与实现
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: MulanPSL-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 3
- **Forks**: 1
- **Created**: 2021-04-27
- **Last Updated**: 2021-08-13
## 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文件:
- [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)
- 克隆的仓库地址: [克隆的Gitee仓库地址](https://gitee.com/dgut-sai/COVID-19)
[克隆的Gitee仓库的csv文件地址](https://gitee.com/dgut-sai/COVID-19/blob/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_confirmed_global.csv)
4. 使用Spring框架自带的RestTemplate工具类爬取数据。
- RestTemplate采用同步方式执行 HTTP 请求的类,底层使用 JDK 原生 HttpURLConnection API ,或者 HttpComponents等其他 HTTP 客户端请求类库。
- RestTemplate 工具类提供模板化的方法让开发者能更简单地发送 HTTP 请求。
- RestTemplate 就是 Spring框架 封装的处理同步 HTTP 请求的工具类。
- [RestTemplate 官方使用指南](https://docs.spring.io/spring/docs/current/spring-framework-reference/integration.html#rest-client-access)
- 另外,可以用 WebClient[WebClient](https://docs.spring.io/spring-framework/docs/current/reference/html/web.html#webmvc-webclient)。
- 使用 RestTemplate 工具类获取上述的csv文件。
- 如果直接使用HTTP客户端请求Gitee上的文件,会报403的错误,但使用浏览器访问是正常的。经过分析,我们使用HTTP客户端请求Gitee上的文件时,需要设置一个请求头部User-Agent,否则会报403异常。
5. 分析csv文件的数据结构,定义model类:
- 分析csv文件的数据结构
- 定义model类
6. 使用Apache Commons CSV组件解释CSV文件。
- 编写一个Controller来测试
7. 使用Spring框架自带的计划任务功能定时更新统计数据。
- 通过在配置类上添加 @EnableScheduling 注解来开启对计划任务的支持
- 在要执行计划任务的方法上注解 @Scheduled,声明这是一个计划任务。
- 配置了每天凌晨1点执行定时任务,更新统计数据
- 也可以在cron参数中使用${...}占位符,读取属性文件中的自定义属性配置cron参数
- 可以通过属性文件设置计划任务线程池的大小,实现并行执行计划任务
8. 要确保应用程序启动时,获取一次统计数据。
- 运行结果
9. 单元测试。
10. 定义Cotroller控制器。
- 前端页面:
- 运行结果( **想查看页面效果可以访问:** http://81.69.13.22:8080/show):