项目搭建
本项目中使用的是手动搭建SpringBoot项目的方式,都是基于Maven的quickstart骨架进行搭建的。
首先创建springcloud-eureka-parent父级项目用于管理spring程序包。
这是创建好的项目结构,由于父级模块只是用于管理包的导入所以可以删掉src,然后进行pom的修改。
由于子项目需要使用springboot与springcloud相关程序包,所以需要在dependencyManagement中添加相关依赖进行管理。
这里我推荐和我使用相同的版本以免造成springboot与springcloud版本兼容问题而报错,具体可以参考
这篇文章进行了解。
然后我们创建三个子模块也是基于之前的Maven的quickstart进行搭建的,一个用于是Eureka服务端,两个用于模拟客户端应用进行注册和通信。都将src中的test目录删除掉,项目中用不上测试类,(如果不删掉会导致项目因为确实测试包报错)完成后具体结构如下:
然后将三个子模块都手动改为springboot项目,以eureka-server为例,其他两个都是相同的做法,文件内容略有不同,下面再详细介绍:
Eureka服务端编写
springcloud-eureka-server-2010的pom文件导入相关依赖
注意导入的是eureka-server包,下面eureka客户端中导入的是eureka-client包。
编写EurekaServerApplication2010
@EnableEurekaServer注解作用是将当前springboot项目标记为eureka服务端。
application.yml文件如下:
将端口设置为2010,eureka的主机名设置为localhost,其他配置如图中注解所示,其中defaultZone中的为获取上面的配置属性值,可以写为http://localhost:2010/eureka/。
然后运行项目,访问localhost:2010出现如下页面说明Eureka服务端搭建成功。
Eureka客户端注册编写
我们就以springcloud-user-server-2020为例,另一个客户端基本相同,只有端口号有所不同。
pom文件中导入以下依赖:
springboot主配置类:
打上@EnableEurekaClient将当前springboot项目标记为Eureka客户端。
application.yml配置为:
其中配置如上所示,配置完成后运行项目,再访问之前的localhost:2010
出现这个说明客户端已经注册成功了,另一个order-server配置与此相同,就不细述。
使用RestTemplate实现客户端间通信
我们用一个实体类User作为模拟的假数据作为通信,由于两个客户端都需要用到User类,所以我们将User实体类抽取到springcloud-commons中。
springcloud-commons的pom中不需要导入任何依赖。
但需要在springcloud-eureka-parent中将commons写入dependencyManagement交给父模块管理。
然后在两个客户端的pom中导入springcloud-commons。
在User客户端中编写controller
其中User为随意创建的假数据。
然后在Order的Springboot主配置中添加RestTemplate的Bean方便我们进行自动注入。
编写Order的controller
然后分别重启两个客户端的springboot服务器,并访问localhost:2030/order,发现返回了User客户端的controller中的数据。
至此,已经完成了Eureka服务的发现与注册以及使用RestTemplate实现客户端间通信。