IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 声明式服务调用 Feign get请求传递参数 -> 正文阅读

[Java知识库]声明式服务调用 Feign get请求传递参数

  1. 进入到nacos安装目录,Linux开启 nacos 服务
    nacos安装
docker-compose -f example/standalone-derby.yaml up
  1. 创建Spring Cloud 工程
    在这里插入图片描述
  • 添加依赖注意版本号

- 父

pom.xml

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.12.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.2.7.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Hoxton.SR12</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>31.1-jre</version>
        </dependency>
    </dependencies>

provider

  1. pom.xml 导入注册discovery 、连接数据库 和 mybatis-plus 的必要依赖
<dependencies>
        <!--        注册中心依赖-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.2</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.1</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.2.8</version>
        </dependency>
    </dependencies>
  1. application.yml 配置nacos:discovery 相关属性 服务器地址和nacos命名空间
server:
  port: 8880
  servlet:
    context-path: "/api/"

spring:
  profiles:
    active: dev
  application:
    # 服务器名
    name: provider-server
  cloud:
    nacos:
      discovery:
        #  配置服务的名称 默认值 spring.application.name
        #        service:
        # 配置注册中心的地址  如果是集群 使用,隔开
        server-addr: "192.168.140.130:8848"
        # 配置注册中心的命名空间  隔离环境的作用
        # 注意 所有的应用必须注册在同一个命名空间下  默认是public
        namespace: "b091994d-1518-4537-9ad6-290c821dd681"
        # 如果注册中开启了 用户认证
        username: ""
        password: ""
  1. 配置 mybatis-plus
    在这里插入图片描述
@Configuration
@MapperScan("com.smart.provider.**.mapper")
public class MyBatisPlusConfig {
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
        PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor();
        paginationInnerInterceptor.setOverflow(true);
        paginationInnerInterceptor.setMaxLimit(50L);
        mybatisPlusInterceptor.addInnerInterceptor(paginationInnerInterceptor);
        return mybatisPlusInterceptor;
    }
}

  1. 反向生成数据库 user 表(entity、mapper、mapper.xml )
  2. service
@Service
public class UserService {

    @Resource
    UserMapper userMapper;
    public List<User> userList(int page,int size){
        Page<User> selectPage = userMapper.selectPage(new Page<>(page, size), new QueryWrapper<>());
        return selectPage.getRecords();
    }
}
  1. controller
@RestController
@RequestMapping("/provider")
public class ProviderController {
    @Resource
    UserService userService;

    @GetMapping("/hello")
    public String hello() {
        return "provider";
    }

    @GetMapping("/user")
    public List<User> userList(int page,int size) {
        return userService.userList(page,size);
    }
}

consumer

  1. pom.xml 引入nacos、feign相关依赖
    <dependencies>
        <!--        注册中心依赖-->
        <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-openfeign</artifactId>
        </dependency>
    </dependencies>
  1. application.yml
server:
  port: 8881
spring:
  application:
    # 服务器名
    name: consumer-server
  cloud:
    nacos:
      discovery:
        server-addr: "192.168.140.130:8848"
        namespace: "b091994d-1518-4537-9ad6-290c821dd681"
  1. 启动类 @EnableFeignClients 将feignClient接口注入到spring ioc
@SpringBootApplication
//将feignClient接口注入到spring ioc
@EnableFeignClients
public class ConsumerApp {
    public static void main(String[] args) {
        SpringApplication.run(ConsumerApp.class, args);
    }
}
  1. user实体类也要写在consumer,删掉不必要的注解
  2. 服务降级

/**
 * 服务降级
 */
@FeignClient(name = "provider-server", path = "/api/provider")
public interface ProviderApi {
    @GetMapping("/user")
    List<User> userList(@RequestParam int page, @RequestParam int size);
}
  1. controller
@RestController
public class ConsumerController {
    @Resource
    ProviderApi providerApi;
    @GetMapping("/user")
    public List<User> userList(int page,int size) {
        return providerApi.userList(page, size);
    }
}
  1. provider 开启多实例运行 修改端口号 8880、8882两个实例
    在这里插入图片描述
    在这里插入图片描述

测试
在这里插入图片描述

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-04-09 18:09:53  更:2022-04-09 18:12:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 5:25:01-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码