首先需要根据SpringBoot的版本选择SpringCloud的版本,我的SpringBoot是2.2.x版本,因此SpringCloud也选择对应版本
在微服务的common服务中添加SpringCloud Alibaba管理
<!--需要与SpringBoot的版本对应,写到DependencyManagement管理版本-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
注册中心使用的是Nacos,进入官网结合项目进行配置
首先给微服务的common模块引入依赖,因为其他模块是依赖于common模块,因此就完成了所有模块的注册中心的依赖问题
<!--服务注册于发现,在此处依赖就相当于其他依赖于此模块的服务都将有服务注册发现功能-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
然后在properties文件中,或者是yml文件中配置,发现服务的地址和端口
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
给需要注册的服务中添加完服务地址和端口后,需要在SpringBoot的启动类上加上@EnableDiscoveryClinet
接下来就启动nacos的服务端
访问 http://localhost:8848/nacos
用户名和密码默认都是nacos
登录进去后如下图
现在启动一个已配置好的服务进行测试(如果前面没有配置应用名称需要先配置名称)
spring:
application:
name: mall-coupon
进入Nacos管理页面,查看它的服务管理,可以看见刚刚启动的微服务
通过SpringCloud Feign来进行服务的远程调用,采用的HTTP协议。
首先需要加入open Feign的依赖,谁要调用其他的就给谁加
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
//需要调用的微服务名
@FeignClient("mail-coupon")
public interface CouponFeignService {
// 写完整地址需要调用的方法名
@RequestMapping("/coupon/coupon/member/list")
public R memberCoupons();
}
启动类上加上@EnableFeignClients
开启远程调用功能
使用Nacos作为配置中心,参照官方demo进行配置
首先在mall-common中导入依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
然后给需要配置中心的服务进行配置(我这里给我的每一个微服务都进行配置),一定要配置在bootstrap.properties配置文件中,否则不生效
spring.application.name=nacos-config-example
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
接下来需要在Controller上加上@RefreshScope
注解,表示可以动态刷新scope
接下来就可以写一些测试的properties然后注入到某个controller中
在application.properties文件中写入自定义属性
member.user.name=lisi
member.user.age=18