-
导入SpringCloudAlibaba的依赖
<dependencyManagement> <dependencies> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>2.1.0.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
-
导入 Nacos 依赖
<!-- 剔除ribbon的 nacos 依赖 , 因为Spring Cloud版本较新,后面会导入别的依赖和ribbon冲突--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <exclusions> <exclusion> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-ribbon</artifactId> </exclusion> </exclusions> </dependency>
-
配置Nacos地址 (修改 yaml文件)
spring: cloud: nacos: discovery: server-addr: 127.0.0.1:8848
-
开启服务的注册与发现(修改主启动类)
@EnableDiscoveryClient //加上该注解即可
-
添加服务名(注册到Nacos的名字)
spring: application: name: XXXXX
-
启动Nacos (startup.cmd -m standalone)
-
启动微服务,登录Nacos并查看
-
添加OpenFeign依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
如果使用 新版的SpringCloud Alibaba 需要添加该依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
<version>3.1.0</version>
</dependency>
-
使用OpenFeign
(1) 在要远程连接的微服务中,添加想要添加的Controller 层 的代码 如下:
(2) 配置微服务客户端(另一个微服务)
可单独设置一个 feign包 存放 客户端连接(使用接口存放), 存放的内容为 上面Controller的方法,路径等 , 最后加上注解 FeignClient , name的值为另一个微服务的 application.name 如下
(3) 在 这个微服务中来调用上面写的接口(和调用普通的Service方法相同)
(4) 在 主函数中开启Openfeign(添加注解)@EnableFeignClients
(5) 运行两个微服务(前提是两个微服务都注册到了Nacos上) , 在客户端入口输入地址即可远程连接另一个微服务
-
Nacos配置中心
(1)导入依赖<!-- nacos的配置中心依赖--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency> <!--读取bootstrap文件--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bootstrap</artifactId> <version>3.0.4</version> </dependency>
(2) 建bootstrap文件 (yaml或者properties格式)
spring.cloud.nacos.config.server-addr=127.0.0.1:8848 spring.application.name=服务名
(3)在Nacos中配置
(4)动态刷新注解
@RefreshScope //放到Controller层
(5) 运行
扩展: 为每个微服务添加命名空间并分组
(1)根据每个微服务创建命名空间
(2) 为每个微服务添加不同的分组
(3) 修改bootstrap文件
spring.cloud.nacos.config.namespace=命名空间Id
spring.cloud.nacos.config.group=分组名称
-
getway网关
(1)创建Spring Boot项目,选择或导入GetWay网关的依赖
(2)导入公共模块的依赖
(3)开启服务注册发现(在主函数上加@EnableDiscoveryClient注解)
(4) 注册进Nacos并添加配置中心//application.properties spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848 spring.application.name=网关服务名 server.port=88 //bootstrap.properties spring.application.name=跳转服务名 spring.cloud.nacos.config.server-addr=127.0.0.1:8848 spring.cloud.nacos.config.namespace=网关的命名空间Id
(5)配置网关
spring: cloud: gateway: routes: - id: 自定义Id uri: 跳转的地址 predicates: - Query=跳转地址携带的参数
(6)运行