# 全球新型冠状病毒实时数据统计应用程序的设计与实现 **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):