SpringCloud--Feign&GateWay

Feign

创建项目勾选web SpringWeb

1.0 创建生产者SpringCloudFeignProvider

端口号:8081
pom.xml引入依赖

xml 复制代码
        <!--nacos依赖-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2021.0.5.0</version>
        </dependency>

application.yml配置

yml 复制代码
spring:
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848 #表示注册到哪个注册中心
  application:
    name: provider #应用名 生产者

添加注解

@EnableDiscoveryClient

1.1 创建消费者SpringCloudFeignCustomer

端口号:8082
pom.xml引入依赖

xml 复制代码
        <!--nacos依赖-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2021.0.5.0</version>
        </dependency>

application.yml配置

yml 复制代码
spring:
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848 #表示注册到哪个注册中心
  application:
    name: customer #应用名 生产者

添加注解

@EnableDiscoveryClient

1.2 开启nacos

D:\ideaworkspace\jar\nacos-server-2.2.0\nacos\bin>startup.cmd -m standalone

1.3 访问

http://127.0.0.1:8848/nacos/#/login

userName:nacos

passWord:nacos

保证服务可以注册到注册中心上

2.0 在Provider(生产者中)SpringCloudFeignProvider

2.1 引入依赖
xml 复制代码
        <!--feign 依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
            <version>3.1.8</version>
        </dependency>
        <!--加载器-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-loadbalancer</artifactId>
            <version>3.1.8</version>
        </dependency>
2.2 写feign层

创建feign包
编写interface MyFeign

java 复制代码
package com.linnuoci.springcloudfeignprovider.feign;

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;

@FeignClient(name ="customer")//指定服务名称
//provider要调用customer的接口
//@FeignClient注解的name属性值表示要调用服务的名字
public interface MyFeign {
    @RequestMapping("/test")//会把这个方法转接到customer的test方法
    public String m1(String str);

}

创建controller包 创建FeignController类

java 复制代码
package com.linnuoci.springcloudfeignprovider.controller;

import com.linnuoci.springcloudfeignprovider.feign.MyFeign;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class FeignController {
    @Autowired
    private MyFeign myFeign;

    @RequestMapping("/test")
    @ResponseBody
    public String test(String str){

        return myFeign.m1(str);
    }

}

在启动项上添加注解@EnableFeignClients//启用 Feign 客户端

3.0 customer(消费者中)SpringCloudFeignCustomer

3.1 创建Controller 编写TestFeignController
java 复制代码
package com.linnnuoci.springcloudfeigncustomer.controller;

import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestFeignController {
    @RequestMapping("/test")
    public String test(@RequestBody String str){
        return "这是我customer返回的:"+str;
    }
}

访问 http://localhost:8081/test

SpringCloud--GateWay

创建项目
创建项目时不要引入任何依赖 与spring-web冲突

1.0 添加依赖pom.xml

xml 复制代码
        <!--GateWay依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
            <version>3.1.8</version>
        </dependency>
        <!--加载器-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-loadbalancer</artifactId>
            <version>3.1.8</version>
        </dependency>
        <!--nacos依赖 用于注册到nacos-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2021.0.5.0</version>
        </dependency>
1.1 在java同级目录下创建resources标记为资源根

创建application.yml添加配置

yml 复制代码
server:
  port: 8083
spring:
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848 #表示注册到哪个注册中心
    gateway:
      routes:   #路由
      - id: provider #路由的id 自己起的不要跟其他路由id重复
        uri: lb://provider #设置路由的url 表示往哪个服务代理 lb后写的是服务的名字 application name
        predicates:
          - Path=/provider/* #路径匹配规则  当访问 http://127.0.0.1:8083/provider/test 时,会转发到provider服务 http://127.0.0.1:8081/test
      discovery:
        locator:
          enabled: true #开启路由发现
  application:
    name: gateway #应用名 网关

provider中的application name

1.2 启动项上添加注解@EnableDiscoveryClient

访问 http://localhost:8083/provider/test?str=123

相关推荐
Joy T7 小时前
Spring AI 项目中的 pom.xml、application.yml 与 Nacos:从依赖管理到运行配置
spring·nacos·pom.xml·profile·参数配置·application.yml
fundoit14 小时前
为什么需要 Access Token 和 ID Token 两个令牌
java·spring·架构·github·oauth2
鱼宵14 小时前
Spring AI 流式输出:Flux + SSE 打字机,回答不再干等三秒
java·人工智能·spring·sse·springai·流式输出
小鹿的周先生15 小时前
第19章-Agent
java·spring·ai
步行cgn17 小时前
MySQL 报错:Access denied for user ‘root‘@‘localhost‘ 详解
java·数据库·spring
鱼宵17 小时前
Spring AI 生产化改造:记忆落 Redis、向量落 ES,重启再也不丢
人工智能·redis·spring·elasticsearch·springai
Wang's Blog18 小时前
Java框架 SpringCloud 快速入门: Nacos 配置热更新
java·spring·spring cloud
天空鸟_时光不老19 小时前
06-给AI流程加一道人工闸门
java·人工智能·spring boot·后端·spring·spring cloud·架构
Wang's Blog19 小时前
Java框架 SpringCloud 快速入门: Nacos 配置管理之添加配置与 dataId 命名规范
java·开发语言·spring cloud
阿俊-全栈开发19 小时前
LikeShop单商户Java商城如何从容承接高并发流量?
java·开发语言·spring boot·spring·系统架构