当前位置:   article > 正文

3.springcloud alibaba整合gateway_springcloud alibaba整合spring-cloud-starter-gateway

springcloud alibaba整合spring-cloud-starter-gateway

一.gateway简介

springcloud gateway是springcloud全家桶的一个组件之一,替代了之前zuul。springcloud gateway组件的功能很强大,可以让我们很容易实现路由,白名单,限流,鉴权等功能,对于微服务系统来说,gateway就是系统的门户,是必不可少的一环。
在这里插入图片描述

二.添加依赖

注:这里贴出来的是部分关键依赖,篇幅有限,详情请下载源码:https://gitee.com/superamxing/simple-demo

<dependency>
<groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-gateway</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-openfeign-core</artifactId>
</dependency>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

添加好依赖,然后再启动类上加上@EnableFeignClients,@EnableDiscoveryClient,@SpringBootApplication三个注解,分别是开启Feign客户端,服务注册和Springboot程序的核心注解:

@EnableFeignClients
@EnableDiscoveryClient
@SpringBootApplication
public class LibraryGatewayApplication {

    @LoadBalanced
    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
    
    public static void main(String[] args) {
        SpringApplication.run(LibraryGatewayApplication.class, args);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

然后再启动一个项目library-client,以/api/user/login接口为例,在网关项目的yml文件中添加如下配置,具体gateway的路由功能需要大家参考官方文档来钻研学习:

server:
  port: 8888
spring:
  cloud:
    nacos:
      discovery:
        server-addr: ${NACOS_HOST}:${NACOS_PORT}
      config:
        server-addr: ${NACOS_HOST}:${NACOS_PORT}
        file-extension: yml
      username: nacos
      password: nacos
    gateway:
      discovery:
        locator:
          enabled: true
      routes:
      - id: library-client
        uri: lb://library-client
        predicates:
        - Path=/library-client/api/**
        filters:
        - StripPrefix=1
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://${MYSQL_HOST}:${MYSQL_PORT}/db_library?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC
    username: root
    password: root
  application:
    name: library-gateway
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

分别启动好两个项目,网管项目library-gateway和客户端项目library-client
在这里插入图片描述
然后我们直接可以通过调用网关服务(服务端口为8888),然后路由到library-client.
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/301514?site
推荐阅读
相关标签
  

闽ICP备14008679号