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

相关推荐
yio_yin3 小时前
Spring事务管理(数据一致性)
数据库·sql·spring
dear_bi_MyOnly4 小时前
【SpringBoot配置文件】
java·spring boot·后端·学习·spring·java-ee·学习方法
our_times5 小时前
2026年Java开发者破局指南:Spring AI 2.0 与 Agent 开发实战
java·人工智能·spring
wear工程师6 小时前
@Transactional 标了却没开事务?先看这次调用有没有经过代理
java·spring
野蛮人6号7 小时前
黑马天机学堂系列问题之域名无法正常使用
java·spring cloud·天机学堂
静水楼台x9 小时前
spring security
java·数据库·spring
咖啡八杯18 小时前
GoF设计模式——解释器模式
java·后端·spring·设计模式
糖果店的幽灵18 小时前
【DeepAgents 从入门到精通】Context Management 上下文管理
java·人工智能·后端·spring·中间件·langgraph·deepagents
Suhan421 天前
IDEA 设置启动参数和环境变量
spring boot·spring·编辑器·idea
橘子海全栈攻城狮1 天前
【最新源码】基于SpringBoot + Vue的超市管理系统的设计与实现D002
java·开发语言·vue.js·spring boot·后端·spring