城市数据API微服务的实现城市数据API微服务包含了城市数据查询组件 。 城市数据查询组件提供了城市数据查询的接口 。
城市数据由于不会经常被更新 , 属于静态数据 , 所以我们已经将ciylst.xml文件放置到resoures目录下 , 由我们的城市数据服务来读取里面的内容即可 。
在micro-weather-report应用的基础上 , 我们将对其进行逐步的拆分 , 形成-一个新的微服务msa-weather-city-server应用 。
所需环境为了演示本例子 , 需要采用如下开发环境 。
JDK 8 。
Gradle 4.0 。
●Spring Boot Web Starter 2.0.0.M4 。
调整服务层代码在com.waylau.spring.cloud. weather.service包下 , 我们之前已经定义了该应用的城市数据服务接口CityDataService 。
public interface CityDataService {获取城市列表.@return@throws ExceptionList listCity() throws Exception;CityDataServiceImpl是对CityDataService接口的实现 , 保留之前的代码即可 。 package com. waylau . spring. cloud. weather .service;import java. io. BufferedReader;import java. io. InputStreamReader;import java.util.List;import org. springframework.core. io.ClassPathResource;import org. springframework.core. io. Resource;import org. springframework. stereotype. Service;import com. waylau. spring. cloud. weather .util. XmlBuilder;import com. waylau. spring. cloud. weather . vo.City;import com. waylau. spring. cloud. weather.vo.CityList;/**★城市数据服务.* @since 1.0.0 2017年10月23日* @author Way Lau*/@Servicepublic class CityDataService Impl implements CityDataService {@Overridepublic List listCity() throws Exception {//读取XML文件Resource resource = new ClassPathResource ("citylist. xml");Buf feredReader br = new BufferedReader (new InputStreamReader (re-source . getInputStream(), "utf-8")) ;StringBuffer buffer = new StringBuffer() ;String line = "";while ( (line = br. readLine()) != null) {buffer .append(line) ;br.close() ;// XML转为Java对象CityList cityList = (CityList) XmlBuilder . xmlStrToobject (CityList.class, buffer. toString()) ;return cityList. getCityList();}}除上述CityDataServicelmpl、CityDataService 外 , 其他服务层的代码都可以删除了 。
新增CityController用于返回所有城市的列表 。
@RestController@Reques tMapping ("/cities")public class CityController {@Autowiredprivate CityDataService cityDataService;@GetMappingpublic List listCity() throws Exception {return cityDataService.listCity() ;}}除上述CityController外 , 其他控制层的代码都可以删除了 。
删除配置类和天气数据同步任务配置类RestConfiguration、 QuartzConfiguration 及任务类WeatherDataSyncJob 的代码都可以删除了 。
清理值对象清理值对象我们需要保留解析城市相关的类 , 其他值对象(除City、CityList外)都可以删除了 。
清理前端代码、配置及测试用例已经删除的服务接口的相关测试用例自然也是要一并 删除的 。
同时 , 之前所编写的页面HTML、JS文件也要一并 删除 。
最后 , 要清理Thymeleaf在application.properties文件中的配置 , 以及build.gradle 文件中的依赖 。
推荐阅读
-
同比增长|佳电股份:前三季度净利预增37%-45%
-
-
说说校园欺凌给你或者当时你认识的小朋友带来了怎么样的影响作为当事人或者其父母老师,应该怎样解决此事
-
|钓鱼时鱼竿卡住怎么办?蛮力容易弄断鱼竿,渔具店老板给涨知识
-
软件:品高软件冲刺科创板 募资金额近5成拟建总部大楼
-
穿越火线手游赛事|联盟“百花齐放”时代来临,双冠R.LGD只是开始
-
陈楚生自曝家里曾卖拖鞋,得知张远家拖鞋需求大,感叹错失大客户
-
-
直播吧官方球员将在酒店集中住宿,德媒:拜仁明日恢复团队训练
-
成龙 |息影38年的影后,只有成龙才能请她出山,仅出镜一分钟依然被认出
-
银行|《心居》三大意外:冯晓琴有私生子,顾清俞吻懵展翔,冯茜茜暧昧顾昕
-
-
适量|美味家常菜,鲜香下饭,好吃好做,全家老少都爱吃
-
『阿梁1994』无人可以幸免,中国粮食储备还够14亿人吃多,假如全球疫情大爆发
-
美家美宿@【泰式柠檬凤爪】的做法+配方,爽口解馋零食,酸辣美味停不下来
-
崛起我的国|强国真正目标浮出水面,印军醒悟后为时已晚,班公湖果然是个幌子
-
-
环球时报|1月乌克兰客机坠毁最新调查结果:第一枚导弹击中后乘客本还活着
-
新华网|山西公布疾控机构核酸收费标准:60元每人次,自愿检测
-
青年|王者荣耀:李信世冠皮肤上线后,李信玩家集体后悔了!