导言
最近在捣鼓微服务项目时,整和注册发现服务和网关服务时处理的依赖和配置问题,nacos需要自己在官网提前下载解压好。
nacos代码配置
导入依赖
在父工程中导入依赖如下
<properties>
<spring-cloud-alibaba.version>2022.0.0.0</spring-cloud-alibaba.version> <spring-cloud.version>2022.0.0</spring-cloud.version>
</properties>
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>${spring-cloud-alibaba.version}</version> <type>pom</type> <scope>import</scope> </dependency>
子模块中依赖如下
<!-- Nacos服务发现 --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <!-- OpenFeign服务调用--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> <!-- 负载均衡器--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-loadbalancer</artifactId> </dependency>
配置当前服务
在application.propertise中加入服务配置
#当前服务名称 spring.application.name=**** #微服务调用 spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
在服务启动类中添加注解
@EnableDiscoveryClient//服务发现 @EnableFeignClients//服务调用
调用服务目标服务
具体步骤如下
创建一个接口被spring管理 添加注解@FeignClient("调用服务的名称")
spring.application.name=调用服务的名称
@Component @FeignClient("调用服务的名称")//调用服务 ------目标服务需要配置服务名称 public interface ***Client { @PostMapping("/**/***") public Return **(); }
Gateway代码配置
导入依赖
在父工程中导入依赖如下
<properties>
<spring-cloud-alibaba.version>2022.0.0.0</spring-cloud-alibaba.version> <spring-cloud.version>2022.0.0</spring-cloud.version>
</properties>
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>${spring-cloud-alibaba.version}</version> <type>pom</type> <scope>import</scope> </dependency>
子模块中依赖如下
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> </dependency>
配置gateway路由
在application.propertise中加入服务配置
spring.application.name=gateway spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
#使用服务发现路由 spring.cloud.gateway.discovery.locator.enabled=true #路由配置 spring.cloud.gateway.routes[0].id=服务名称 spring.cloud.gateway.routes[0].uri.=lb://服务名称 spring.cloud.gateway.routes[0].predicates=Path=/路径/**
在服务启动类中添加注解
@EnableDiscoveryClient//服务发现
解决跨域问题
这个我在application.yml文件配置的
spring: cloud: gateway: # 网关跨域配置start--------------------------------- # 开启网关的跨域功能,具体微服务上的跨域需要进行关闭,否则无效 globalcors: cors-configurations: '[/**]': # 匹配所有请求 allowedOriginPatterns: "*" # 跨域处理 允许所有的域 allowedMethods: "*" # 支持的方法 allowedHeaders: "*" allowCredentials: true # 解决options请求被拦截的问题 add-to-simple-url-handler-mapping: true