2.SpringBoot简介,天气预报

原创 2018年04月17日 07:36:27

1.天气预报系统

  1. 数据来源 http://wthrcdn等开放的接口

查看天气

  1. 访问:http://wthrcdn.etouch.cn/weather_mini?citykey=101280601
  2. 访问:http://wthrcdn.etouch.cn/weather_mini?city=杭州
  3. 但是用API工具返回是正常的:http://apizza.cc

  4. 自身访问:http://localhost:8080/weather/cityName/深圳

  5. 自身访问:http://localhost:8080/weather/cityId/101282004

2.使用redis提高响应能力

  1. 及时响应,减少服务调用
  2. 开发环境:JDK9+ ,Apache HttpClient4.5.3,Redis3.2.100,Spring Boot Web Starter,Spring Boot Data Redis Starter
  3. pom添加spring-boot-starter-data-redis
  4. 先取缓存中的数据
    “`aidl
    private WeatherResponse doGetWeahter(String uri) {
    String key = uri;
    String strBody = null;
    ObjectMapper mapper = new ObjectMapper();
    WeatherResponse resp = null;
    ValueOperations
5. 使用了slf4,日志查看
6. 配置redis,也可以用yml格式
```aidl




<div class="se-preview-section-delimiter"></div>

# redis
spring.redis.host=118.178.134.251
spring.redis.port=6380
spring.redis.password=beikbank




<div class="se-preview-section-delimiter"></div>

3.quartz scheduler定时获取天气数据

  1. 我们不是强依赖,用了redis缓存减少依赖,这个动作,现在是用户请求时拉取最新的,需要定时任务
  2. Spring Boot Quartz Starter 和 Quartz Scheduler
  3. 引入:spring-boot-starter-quartz
  4. 定时任务的类:WeatherDataSyncJob extends QuartzJobBean
  5. QuartzConfiguration需要配置:定义两个类JobDetail和Trigger,其中JobDetail中定义了job,job就是实际执行的类,然后trigger该类
@Bean
    public JobDetail weatherDataSyncJobDetail() {
        return JobBuilder.newJob(WeatherDataSyncJob.class).withIdentity("weatherDataSyncJob")
        .storeDurably().build();
    }




<div class="se-preview-section-delimiter"></div>

5.获取城市列表

  1. 新建City这个Bean,使用工具jaxb(java自带的),对应一个xml
  2. 首先这个Bean声明成xml的根元素,导入包javax.xml,这个name,等于xml中的元素名称,尖括号里面的d
  3. 每个字段都声明,@XmlAttribute
  4. 最后还需要一个注解,访问类型XmlAccessorType,访问类型有如FIELD,按字段访问
  5. 光有城市列表不够,还需要CityList的集合,相应注解跟上,注意@Data
  6. 最后CityList还需要转化成Java,创建一个util包,对应工具类
  7. 使用:CityDataService获取城市列表:(1)读取xml文件,(2)xml转换为Java对象,List

  8. 写一个service,把天气数据放在缓存saveWeatherData,然后syncDateByCityId

  9. 写了一个定时任务,定时将天气信息放在redis

6. 给天气预报一个面子-集成thymeleaf

  1. 获取城市ID的天气预报信息:GET/report/cityId/{cityId}
  2. cpoy新建module,引入spring-boot-starter-thymeleaf
  3. http://localhost:8080/report/cityId/101282004

7.给天气预报一个面子-集成bootstrap

  1. 首先需要一个div,囊括所有,div给一个样式container
  2. 最后选择什么城市,就定义什么城市,需要js
$(function(){
    $("#selectCityId").change(function(){
        var cityId = $("#selectCityId").val();
        var url = '/report/cityId/'+ cityId;
        window.location.href = url;
    })
});




<div class="se-preview-section-delimiter"></div>
  • 通过来调用selectCityId,调用js通过src=@{}
<select class="custom-select" id="selectCityId">
    <option th:each="city : ${reportModel.cityList}"
        th:value="${city.cityId}" th:text="${city.cityName}"
        th:selected="${city.cityId eq reportModel.cityId}"></option>
</select>

8.如何将单块架构进化为微服务

Java天气预报查询代码(完整项目)

  • 2013年11月15日 18:28
  • 573KB
  • 下载

基于Android平台的天气预报软件设计(本科毕业论文)

  • 2013年10月21日 23:17
  • 6.24MB
  • 下载

Android开源天气预报app - 清新小天气

LittleFreshWeather 源码github地址注意咯~~ 最新版已适配最新和风天气接口,可以接着用啦 ^^这是一款简洁的天气预报app–清新小天气,它能够支持国内绝大多数城市...
  • ZeusChan
  • ZeusChan
  • 2016-12-14 11:17:42
  • 6160

01天气预报APP开篇(功能介绍及技术要点)

实现的功能: 1.可以罗列出省市县; 2.使用百度地图定位当前的城市; 3.可以查看全国任意城市的天气信息; 4.可以自由的切换城市,去查看其它城市的天气; 5.提供手动更新以及后台自动更新...
  • chenfuduo_loveit
  • chenfuduo_loveit
  • 2014-12-16 08:30:09
  • 1141

2.Springboot 之 Helloworld

本文所属【知识林】:http://www.zslin.com/web/article/detail/7 上一篇说了Springboot的那么多好处,说得有多么的高效,现在先构造一个Hel...
  • zhaoshuliok
  • zhaoshuliok
  • 2017-04-17 18:04:15
  • 149

2.springboot配置文件

1.配置文件 名称: /resources/application.properties或者 /resources/application.yml 属性格式: xxx.xxx.xxx=xxx或者 aa...
  • qq_34448345
  • qq_34448345
  • 2017-12-12 15:59:05
  • 59

2.springboot初体验

先来一个最简单的演示,代码如下: 这段代码每个介绍springboot的都会有,不能算抄袭吧!! 启动类代码 @SpringBootApplication public class Sp...
  • qq_37852560
  • qq_37852560
  • 2017-09-21 17:47:09
  • 55

安卓天气预报项目代码

  • 2016年03月06日 19:25
  • 3.63MB
  • 下载

天气预报源码(全)

  • 2017年06月09日 09:17
  • 28.93MB
  • 下载
收藏助手
不良信息举报
您举报文章:2.SpringBoot简介,天气预报
举报原因:
原因补充:

(最多只允许输入30个字)