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

发布时间 2023-07-07 16:23:47作者: 你就学个JVAV?

 

导入依赖:

     <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();
     }
 }