欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

springcloud---feign调用以及新版本ribbon处理

时间:2023-07-07

上篇文章讲到了eureka服务注册中心的搭建,这篇文章主要讲解如何进行feign调用,以及记录新版本springcloud(2021.0.0版本)中feign依赖的选择以及ribbon问题。
依旧是三步走:

1.导入依赖2.编写配置文件3.主启动类加上注解支持4.业务处理

1、导入依赖

注意:
新版本使用的是openfeign,同时摒弃掉了ribbon,改用了loadbalancer,所以需要在eureka-client依赖中剔除ribbion,同时加入loadbalancer依赖

org.springframework.cloud spring-cloud-starter-netflix-eureka-client 2.2.7.RELEASE org.springframework.cloud spring-cloud-starter-netflix-ribbon org.springframework.cloud spring-cloud-loadbalancer org.springframework.cloud spring-cloud-starter-openfeign 2.1.3.RELEASE

整体pom.xml文件

<?xml version="1.0" encoding="UTF-8"?> 4.0.0 org.springframework.boot spring-boot-starter-parent 2.6.1 com.cz hospital 0.0.1-SNAPSHOT hospital Demo project for Spring Boot 1.8 2021.0.0 org.springframework.boot spring-boot-starter-web log4j log4j 1.2.17 com.sun.mail javax.mail 1.5.6 org.projectlombok lombok true org.springframework.boot spring-boot-starter-test test mysql mysql-connector-java 8.0.17 com.github.pagehelper pagehelper-spring-boot-starter 1.2.3 org.springframework.cloud spring-cloud-starter-openfeign 2.1.3.RELEASE org.springframework.cloud spring-cloud-loadbalancer org.springframework.cloud spring-cloud-starter-netflix-eureka-client 2.2.7.RELEASE org.springframework.cloud spring-cloud-starter-netflix-ribbon org.springframework.cloud spring-cloud-starter-netflix-hystrix 2.2.2.RELEASE com.baomidou mybatis-plus-boot-starter 2.2.0 org.mybatis.spring.boot mybatis-spring-boot-starter 2.1.1 com.alibaba fastjson 1.2.17 io.springfox springfox-swagger2 2.9.2 io.springfox springfox-swagger-ui 2.9.2 org.springframework.boot spring-boot-starter-data-redis org.apache.commons commons-lang3 com.alibaba easyexcel 2.2.0-beta2 com.auth0 java-jwt 3.7.0 org.apache.shiro shiro-spring 1.4.1 cn.hutool hutool-all 4.5.15 org.springframework.cloud spring-cloud-dependencies ${spring-cloud.version} pom import org.springframework.boot spring-boot-maven-plugin org.projectlombok lombok org.apache.maven.plugins maven-surefire-plugin 2.22.2 true

2、编写配置文件

application.yml
对于eureka配置文件:核心就是instance client server 这三大块

spring: profiles: active: test main: allow-circular-references: true application: name: hospitaleureka: instance: ip-address: true # 是否以ip形式注册 lease-expiration-duration-in-seconds: 90 # 接受服务心跳间隔时间 超过这个间隔 就移除这个服务 lease-renewal-interval-in-seconds: 30 # 表示 Eureka Client 向 Eureka Server 发送心跳的频率(默认 30 秒) client: register-with-eureka: true #是否向服务注册中心注册自己 默认true fetch-registry: true #是否从eureka拉取注册表信息 默认true service-url: defaultZone: http://xxx:9001/eureka # 服务注册中心地址

3.主启动类加上注解支持

@EnableFeignClients

package com.cz;import lombok.extern.slf4j.Slf4j;import org.mybatis.spring.annotation.MapperScan;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.openfeign.EnableFeignClients;@SpringBootApplication//@MapperScan(basePackages = "com.cz.dao.*")@Slf4j@EnableFeignClientspublic class HospitalApplication { public static void main(String[] args) { log.info("程序起飞啦!!!"); SpringApplication.run(HospitalApplication.class, args); }}

启动项目,确保服务成功注册到eureka服务注册中心上

4.Feign使用

name属性表示你所要调用的服务的名称。通过配置文件spring.application.name进行配置,这里只是简单的举个例子。在实际开发中,需要自己写对应的业务逻辑,注入feign接口类,调用fegin的方法,就是调用对应微服务的方法
下图就是自己简单写的另外一个springboot项目:hospatial-doctor,并且注册到eureka上。这样就可以通过服务名称来调用到另外一个服务

package com.cz.service;import org.springframework.cloud.openfeign.FeignClient;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;@FeignClient(name = "hospatial-doctor")public interface DoctorService { @RequestMapping(value = "/test",method = RequestMethod.POST) public String test();}

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。