# SpringBootClass3
**Repository Path**: li_tiger_admin/SpringBootClass3
## Basic Information
- **Project Name**: SpringBootClass3
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2020-05-10
- **Last Updated**: 2020-12-19
## 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、thymeleaf等。
```
org.apache.commons
commons-csv
1.8
```
```
org.springframework.boot
spring-boot-starter-thymeleaf
```
3. 分析csv文件的数据结构,定义pojo类,用于存放病毒数据。

4. 使用Spring框架自带的RestTemplate工具类爬取全球冠状病毒实时统计数据。注意:需要设置user-agent;

5. 使用Apache Commons CSV组件解释,将爬取的数据存放在List中。

6. 使用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:时区,默认为当前时区,一般不需要设置。
如下图所示,例子中配置了每天凌晨2点执行定时任务,更新统计数据:

7. 要确保应用程序启动时,获取一次统计数据.
有多种方法,这里使用InitializingBean。


8. 写一个单元测试。

运行结果

9. 定义Controller控制层;
定义允许带参数的@RequestMapping,用于选择要展示的国家,将数据通过model返回

写一个排序算法,对患病人数的国家进行排名;

10. 定义前端数据展示页面。

