Spring Cloud Gateway+Nacos,yml+properties两种配置文件方式搭建网关服务

摘要:
本文简要介绍了如何在SpringCloud的bucket中使用网关服务,然后使用Nacos。添加依赖项:<dependency><groupId>org。springframework启动springframeworkstarterwebcom.alibaba。cloud春季云启动器alibaba nacos配置2.2.1.发布com.alibaba。云春季云启动器alibaba nacos discovery2.2.1.REASE分别添加了web依赖、配置中心依赖和注册表依赖。配置文件如下:server。端口=8070弹簧。应用name=服务提供商弹簧。云纳科斯。配置。服务器地址=127.01.8848spring。云纳科斯。发现服务器addr=127.0.1:8848启动类如下:packagecom。克里斯。弹簧靴;importorg.springframework.boot。SpringApplication;importorg.springframework.boot.au配置。SpringBootApplication;importorg.springframework.cloud.client.discovery。启用发现客户端;@SpringBootApplication@EnableDiscoveryClientpublicclassMySpringbootApplication{publicstaticvoidmain{SpringApplication.run;}}接口类如下:packagecom.chris.springboot。控制器;importorg.springframework.beans.factory.annotation。价值importorg.springframework.cloud.context.config.annotation。RefreshScope;导入组织弹簧框架。web。ind。注释。GetMapping;导入组织弹簧框架。web。ind。注释。请求映射;导入组织弹簧框架。web。ind。注释。RestController;@RestController@RequestMapping@RefreshScopepublicclassConfigController{@ValueprivateStringhello;@GetMappingpublicStringhelloProvider(){returnhello;}}此服务适用于我的博客:https://www.cnblogs.com/ncwuwsh/p/12732516.html有关中的服务,请参阅。配置文件可以使用属性或yml格式。
写在前面

网关的作用不在此赘述,举个最常用的例子,我们搭建了微服务,前端调用各服务接口时,由于各服务接口不一样,如果让前端同事分别调用,前端同事会疯的。而网关就可以解决这个问题,网关屏蔽了各业务服务的端口,对前端同事来说,他们只负责调用网关服务端口下的服务就可以了。本文简单描述如何使用Spring Cloud全家桶中的网关服务,再配以Nacos。关于Nacos简单应用,可以看我其他博客。

服务提供者

https://start.spring.io/下载一个原始的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.cloud.nacos.config.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);
    }
}

接口类如下:

package com.chris.springboot.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.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;
        }
}

此服务为我的博客:https://www.cnblogs.com/ncwuwsh/p/12732516.html中的服务,可参看。

网关服务

https://start.spring.io/下载一个原始的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.discovery.locator.enabled=true
#是将请求路径上的服务名配置为小写(因为服务注册的时候,向注册中心注册时将服务名转成大写的了),比如以/service-hi/*的请求路径被路由转发到服务名为service-hi的服务上。
spring.cloud.gateway.discovery.locator.lower-case-service-id=true
spring.cloud.gateway.routes[0].id=gateway-service
spring.cloud.gateway.routes[0].uri=lb://service-provider
spring.cloud.gateway.routes[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.cloud.gateway.route.RouteLocator;
import org.springframework.cloud.gateway.route.builder.RouteLocatorBuilder;
import org.springframework.context.annotation.Bean;

@SpringBootApplication
@EnableDiscoveryClient
public class GatewayrouterApplication {

    public static void main(String[] args) {
        SpringApplication.run(GatewayrouterApplication.class, args);
    }
    
    @Bean
    public RouteLocator myRoutes(RouteLocatorBuilder builder) {
        return builder.routes().build();
    }

}

然后启动Nacos,服务提供者和网关服务,使用浏览器访问:http://127.0.0.1:8080/provider/helloProvider

搞定。

网关服务的其他高级应用,自己去看官网吧。

官网是最好的老师

免责声明:文章转载自《Spring Cloud Gateway+Nacos,yml+properties两种配置文件方式搭建网关服务》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇leaks工具查找内存泄露idea运行main方法或Test避免编译整个应用的方法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

循序渐进VUE+Element 前端应用开发(20)--- 使用组件封装简化界面代码

VUE+Element 前端应用,比较不错的一点就是界面组件化,我们可以根据重用的指导方针,把界面内容拆分为各个不同的组合,每一个模块可以是一个组件,也可以是多个组件的综合体,而且这一个过程非常方便。组件封装的目的就是为了能够更加便捷、快速的进行业务功能的开发。组件(component)是vue的最强大功能之一,组件可以实现一些类似功能的复用及与其它业务逻...

前端切图两种方法整理

之前自己转账了一篇文章《切图 — Photoshop(转载)》,里面关于切图的工具、方法和读取的信息,已经写得很详细了。 现在简单总结一下自己整理的两个切图的方法(个人觉得完全够用了) 工具:Photoshop CC 2018 方法一、传统切图: 快捷键:C 选择切片工具   用切片工具在切出想要的切片   存储切片 路径:文件 - 导出 - 存储为W...

【精彩回顾】第二届微医前端技术沙龙(附PPT下载)

5 月 25 日,以「无界」为主题的第二届微医前端技术沙龙成功举办。本届沙龙的演讲题目涵盖了前端技术几个主要的应用场景,包括服务端、桌面端以及跨平台的开发。最近几年前端技术发展非常快,各种可以提高开发效率的新技术和框架层出不穷,让原来的前端工程师蜕变成了新一代的全端工程师,技术之间的界限被打破,相互碰撞、融合和进化。 活动伊始,本届沙龙活动主持人,来自...

后端接收前端参数问题以及RestFul结构

RestFul结构格式特点:   1.在url中将需要提交的参数使用“/”进行分割localhost:8091/addUser/1/tom2.在接收端,将参数使用{}包裹并且参数的位置固定3.变量的名称必须和{}中的名称一致,之后通过@PathVariable注解实现数据的传递功能:1.实现了通用页面的跳转问题2.减少了代码传递的字节数get请求中前端传递...

Struts 2.x仍然明显落后于时代。 Struts 2.x这一类老牌Web MVC开发框架仅能用于开发瘦客户端应用,无法用来开发对于交互体验要求更高的应用。

后来我在工作中陆续使用过Struts 1.x和Struts 2.x。我曾经把一个开源的基于Struts 1.x的自助式广告联盟应用移植到Spring MVC,还基于Struts 2.x做过网站开发。Struts 1.x的主要问题是框架的侵入性太大,不利于代码重用和单元测试。Struts 2.x确实进步很大,完全基于POJO,学习曲线低了很多,还支持零配置(...

接口测试基本理解

想必大家都做过功能测试,通过业务需求测试功能点是否达到预期(测试用例),一些小伙伴想要了解接口测试就会有一些疑问,接口是什么呢?怎么去做接口测试?接口测试为了实现什么? 我们一步一步来说明: 什么是接口? 接口分为对外接口和对内接口 对内接口: 个人理解:程序之间方法的调用,模块之间的交互,比如A开发写好了一个登录接口告诉B开发直接在权限模块调用就可以了。...