SpringCloudGateway+Nacos,yml+properties两种配置⽂件。。。
写在前⾯
⽹关的作⽤不在此赘述,举个最常⽤的例⼦,我们搭建了微服务,前端调⽤各服务接⼝时,由于各服务接⼝不⼀样,如果让前端同事分别调⽤,前端同事会疯的。⽽⽹关就可以解决这个问题,⽹关屏蔽了各业务服务的端⼝,对前端同事来说,他们只负责调⽤⽹关服务端⼝下的服务就可以了。本⽂简单描述如何使⽤Spring Cloud全家桶中的⽹关服务,再配以Nacos。关于Nacos简单应⽤,可以看我其他博客。
服务提供者
从下载⼀个原始的spring boot⼯程,如何下载就不在这⾥说了。添加依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2.2.1.RELEASE</version>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2.2.1.RELEASE</version>
</dependency>
分别添加了web依赖、配置中⼼依赖和注册中⼼依赖。
配置⽂件如下:
server.port=8070
spring.application.name=service-provider
spring.fig.server-addr=127.0.0.1:8848
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
启动类如下:
package com.chris.springboot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
@EnableDiscoveryClient
public class MySpringbootApplication {
public static void main(String[] args) {
SpringApplication.run(MySpringbootApplication.class, args);
spring怎么读取properties}
}
接⼝类如下:
package com.ller;
import org.springframework.beans.factory.annotation.Value;
import org.t.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/provider")
@RefreshScope
public class ConfigController {
@Value(value = "${Hello:123}")
private String hello;
@GetMapping("/helloProvider")
public String helloProvider(){
return hello;
}
}
此服务为我的博客:中的服务,可参看。
⽹关服务
从下载⼀个原始的spring boot⼯程,如何下载就不在这⾥说了。添加依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2.2.1.RELEASE</version>
</dependency>
注意,千万不要添加web依赖。
配置⽂件可以使⽤properties,也可以使⽤yml格式。yml格式如下:
server:
port: 8080
spring:
application:
name: api-gateway
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
gateway:
discovery:
locator:
enabled: true #表明gateway开启服务注册和发现的功能,并且spring cloud gateway⾃动根据服务发现为每⼀个服务创建了⼀个router,这个router将以服务名开头的请求路径转发到对应的服务。
lower-case-service-id: true #是将请求路径上的服务名配置为⼩写(因为服务注册的时候,向注册中⼼注册时将服务名转成⼤写的了),⽐如以/service-hi/*的请求路径被路由转发到服务名为service-hi的服务上。 routes:
- id: gateway-service
uri: lb://service-provider #此配置的值注册到Nacos中服务提供者的spring.application.name的值
predicates:
- Path=/provider/**
使⽤yml的同学,⼀定要去查下yml的⼀些规则,⽐如:后⾯,值的前⾯,⼀定要有空格,缩进不要使⽤tab键,⽽要⽤两个空格缩进等
下⾯是properties格式配置⽂件:
server.port=8080
spring.application.name=api-gateway
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
#表明gateway开启服务注册和发现的功能,并且spring cloud gateway⾃动根据服务发现为每⼀个服务创建了⼀个router,这个router将以服务名开头的请求路径转发到对应的服务。
spring.cloud.gateway.abled=true
#是将请求路径上的服务名配置为⼩写(因为服务注册的时候,向注册中⼼注册时将服务名转成⼤写的了),⽐如以/service-hi/*的请求路径被路由转发到服务名为service-hi的服务上。
spring.cloud.gateway.discovery.locator.lower-case-service-id=true
spring.utes[0].id=gateway-service
spring.utes[0].uri=lb://service-provider
spring.utes[0].predicates[0]=Path=/provider/**
下⾯是⽹关的启动类:
package com.chris.gatewayrouter;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.ute.RouteLocator;
import org.springframework.ute.builder.RouteLocatorBuilder;
import t.annotation.Bean;
@SpringBootApplication
@EnableDiscoveryClient
public class GatewayrouterApplication {
public static void main(String[] args) {
SpringApplication.run(GatewayrouterApplication.class, args);
}
@Bean
public RouteLocator myRoutes(RouteLocatorBuilder builder) {
utes().build();
}
}
然后启动Nacos,服务提供者和⽹关服务,使⽤浏览器访问:
搞定。
⽹关服务的其他⾼级应⽤,⾃⼰去看官⽹吧。
官⽹是最好的⽼师
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论