springcloud - gateway的简单搭建以及网关配置的两种方式

 

导入依赖:

     <dependencies>
         <!--做网关时不要引入starter-web和starter-actuator两个包 否则会导致启动报错-->
         <!--gateway 核心依赖   comment : new dependency-->
         <dependency>
             <groupId>org.springframework.cloud</groupId>
             <artifactId>spring-cloud-starter-gateway</artifactId>
         </dependency>
 ​
 ​
         <!--eureka-client-->
         <dependency>
             <groupId>org.springframework.cloud</groupId>
             <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
         </dependency>
         <!-- 引入自己定义的api通用包,可以使用Payment支付Entity -->
         <dependency>
             <groupId>com.atguigu.springcloud</groupId>
             <artifactId>cloud-api-commons</artifactId>
             <version>${project.version}</version>
         </dependency>
         <!--一般基础配置类-->
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-devtools</artifactId>
             <scope>runtime</scope>
             <optional>true</optional>
         </dependency>
         <dependency>
             <groupId>org.projectlombok</groupId>
             <artifactId>lombok</artifactId>
             <optional>true</optional>
         </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-test</artifactId>
             <scope>test</scope>
         </dependency>
     </dependencies>

编写常规启动类 两种方式实现网关配置:

1.第一种yml文件配置

 
 server:
  port: 9527
 
 spring:
  application:
    name: cloud-gateway
  cloud:  #新增网关配置
    gateway:
      routes:
        - id: payment_routh #payment_route   #路由的ID,没有固定规则但要求唯一,建议配合服务名
          uri: http://localhost:8001          #匹配后提供服务的路由地址
          predicates:
            - Path=/payment/get/**         # 断言,路径相匹配的进行路由
 
        - id: payment_routh2 #payment_route   #路由的ID,没有固定规则但要求唯一,建议配合服务名
          uri: http://localhost:8001          #匹配后提供服务的路由地址
          predicates:
            - Path=/payment/lb/**         # 断言,路径相匹配的进行路由
 
 eureka:
  instance:
    hostname: cloud-gateway-service
  client: #服务提供者provider注册进eureka服务列表内
    service-url:
      register-with-eureka: true
      fetch-registry: true
      defaultZone: http://eureka7001.com:7001/eureka
 
 

2.配置类的方式

 @Configuration
 public class CustomRouteConfig {
     @Bean
     public RouteLocator customRoute(RouteLocatorBuilder builder) {
 ​
         RouteLocatorBuilder.Builder routes = builder.routes();
         routes.route("cloud_route_atguigu",
                 r -> r.path("/route")  
                        .uri("http://www.baidu.com/route")).build();
         return routes.build();
    }
 }

springcloud -gateway动态路由 yml配置

 server:
  port: 9527
 
 spring:
  application:
    name: cloud-gateway
  cloud:
    gateway:
      discovery:
        locator:
          enabled: true #开启从注册中心动态创建路由的功能,利用微服务名进行路由
      routes:
        - id: payment_routh #payment_route   #路由的ID,没有固定规则但要求唯一,建议配合服务名
           # uri: http://localhost:8001         #匹配后提供服务的路由地址
          uri: lb://cloud-payment-service #匹配后提供服务的路由地址
          predicates:
            - Path=/payment/get/**         # 断言,路径相匹配的进行路由
 
        - id: payment_routh2 #payment_route   #路由的ID,没有固定规则但要求唯一,建议配合服务名
           # uri: http://localhost:8001         #匹配后提供服务的路由地址
          uri: lb://cloud-payment-service #匹配后提供服务的路由地址
          predicates:
            - Path=/payment/lb/**         # 断言,路径相匹配的进行路由
 
 eureka:
  instance:
    hostname: cloud-gateway-service
  client: #服务提供者provider注册进eureka服务列表内
    service-url:
      register-with-eureka: true
      fetch-registry: true
      defaultZone: http://eureka7001.com:7001/eureka

posted on   你就学个JVAV?  阅读(73)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
点击右上角即可分享
微信分享提示