Spring Cloud实战案例 │ 简易天气预报系统

简介: 本案例介绍简易天气预报系统的实现。整个应用分为3个微服务项目,分别是Eureka服务器项目mweathereurekaserver、天气服务提供者项目weatherbasic、天气服务消费者项目weatherclient。

image.png


#1、实现天气服务提供者项目weatherbasic
##1●新建项目并添加依赖

新建项目weatherbasic,确保在文件pom.xml的和之间添加了Eureka Client、Web、Lombok等依赖。
##2●创建类、接口并修改配置文件

依次在包com.bookcode下创建vo、service、controller等子包,并在包com.bookcode.vo中创建类Forecast、Weather、WeatherResponse、Yesterday,在包com.bookcode.service中创建接口WeatherDataService和impl子包,在包com.bookcode.service.impl中创建类WeatherDataServiceImpl,在包com.bookcode.controller中创建类WeatherController,并修改这些类和接口的代码。

修改在目录src/main/resources下的配置文件application.properties。
#2、实现天气服务消费者项目weatherclient
##1●新建项目并添加依赖

新建项目weatherclient,确保在文件pom.xml的和和之间添加了Eureka Client、Thymeleaf、Lombok、Web依赖。
##2●创建类

依次在包com.bookcode下创建entity、service、controller、utils等子包,并在包com.bookcode.entity中创建类City、CityList、Forecast、Weather、Yesterday,在包com.bookcode.service中创建类CityDataService、CallWeatherService、WeatherReportService,在包com.bookcode.controller中创建类CallWeatherController、WeatherReportController,在包com.bookcode.utils中创建类XmlBuilder,并修改这些类的代码。
##3●新建文件和修改配置文件

在目录src/main/resources下创建文件citylist.xml,在目录src/main/resources/templates下创建文件report.html,并修改这些文件的代码。

修改在目录src/main/resources下的配置文件application.properties。
#3、程序运行结果

依次运行项目mweathereurekaserver、weatherbasic(服务名称为microweatherservice,端口为8762)、weatherclient(端口为8764)。

在浏览器中输入localhost:8762/weather/cityId/101190801,结果如图1所示。

image.png


■ 图1 在浏览器中输入localhost:8762/weather/cityId/101190801的结果

在浏览器中输入localhost:8764/cityId/101190801,结果如图2所示。对比图1和图2可以发现两者数据(天气服务内容)完全相同。

image.png


■ 图2 在浏览器中输入localhost:8764/cityId/101190801的结果

在浏览器中输入localhost:8764/report/cityId/101190801,结果如图3所示。

image.png


■ 图3 在浏览器中输入localhost:8764/report/cityId/101190801的结果

大家可以通过天气服务消费者项目weatherclient体会到访问远程Spring Cloud微服务和实现本地服务的差异。与本系统类似的代码可以参考网址https://github.com/LuckyShawn/spring-cloud-weather

目录
相关文章
|
4月前
|
Java UED Sentinel
微服务守护神:Spring Cloud Sentinel,让你的系统在流量洪峰中稳如磐石!
【8月更文挑战第29天】Spring Cloud Sentinel结合了阿里巴巴Sentinel的流控、降级、熔断和热点规则等特性,为微服务架构下的应用提供了一套完整的流量控制解决方案。它能够有效应对突发流量,保护服务稳定性,避免雪崩效应,确保系统在高并发下健康运行。通过简单的配置和注解即可实现高效流量控制,适用于高并发场景、依赖服务不稳定及资源保护等多种情况,显著提升系统健壮性和用户体验。
87 1
|
16天前
|
JSON Java 测试技术
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
50 3
|
2月前
|
自然语言处理 Java API
Spring Boot 接入大模型实战:通义千问赋能智能应用快速构建
【10月更文挑战第23天】在人工智能(AI)技术飞速发展的今天,大模型如通义千问(阿里云推出的生成式对话引擎)等已成为推动智能应用创新的重要力量。然而,对于许多开发者而言,如何高效、便捷地接入这些大模型并构建出功能丰富的智能应用仍是一个挑战。
132 6
|
2月前
|
缓存 NoSQL Java
Spring Boot与Redis:整合与实战
【10月更文挑战第15天】本文介绍了如何在Spring Boot项目中整合Redis,通过一个电商商品推荐系统的案例,详细展示了从添加依赖、配置连接信息到创建配置类的具体步骤。实战部分演示了如何利用Redis缓存提高系统响应速度,减少数据库访问压力,从而提升用户体验。
86 2
|
23天前
|
JavaScript NoSQL Java
CC-ADMIN后台简介一个基于 Spring Boot 2.1.3 、SpringBootMybatis plus、JWT、Shiro、Redis、Vue quasar 的前后端分离的后台管理系统
CC-ADMIN后台简介一个基于 Spring Boot 2.1.3 、SpringBootMybatis plus、JWT、Shiro、Redis、Vue quasar 的前后端分离的后台管理系统
34 0
|
2月前
|
Java 数据库连接 Spring
【2021Spring编程实战笔记】Spring开发分享~(下)
【2021Spring编程实战笔记】Spring开发分享~(下)
29 1
|
2月前
|
XML Java 数据格式
Spring IOC容器的深度解析及实战应用
【10月更文挑战第14天】在软件工程中,随着系统规模的扩大,对象间的依赖关系变得越来越复杂,这导致了系统的高耦合度,增加了开发和维护的难度。为解决这一问题,Michael Mattson在1996年提出了IOC(Inversion of Control,控制反转)理论,旨在降低对象间的耦合度,提高系统的灵活性和可维护性。Spring框架正是基于这一理论,通过IOC容器实现了对象间的依赖注入和生命周期管理。
73 0
|
2月前
|
XML Java 数据库连接
【2020Spring编程实战笔记】Spring开发分享~(上)
【2020Spring编程实战笔记】Spring开发分享~
53 0
|
4月前
|
消息中间件 Java RocketMQ
微服务架构师的福音:深度解析Spring Cloud RocketMQ,打造高可靠消息驱动系统的不二之选!
【8月更文挑战第29天】Spring Cloud RocketMQ结合了Spring Cloud生态与RocketMQ消息中间件的优势,简化了RocketMQ在微服务中的集成,使开发者能更专注业务逻辑。通过配置依赖和连接信息,可轻松搭建消息生产和消费流程,支持消息过滤、转换及分布式事务等功能,确保微服务间解耦的同时,提升了系统的稳定性和效率。掌握其应用,有助于构建复杂分布式系统。
67 0
|
4月前
|
JSON Java API
解码Spring Boot与JSON的完美融合:提升你的Web开发效率,实战技巧大公开!
【8月更文挑战第29天】Spring Boot作为Java开发的轻量级框架,通过`jackson`库提供了强大的JSON处理功能,简化了Web服务和数据交互的实现。本文通过代码示例介绍如何在Spring Boot中进行JSON序列化和反序列化操作,并展示了处理复杂JSON数据及创建RESTful API的方法,帮助开发者提高效率和应用性能。
172 0
下一篇
无影云桌面