• 项目结构

  • sb_cloud_product

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.huarui</groupId><artifactId>sb_cloud_product</artifactId><version>0.0.1-SNAPSHOT</version><name>sb_cloud_product</name><description>Demo project for Spring Boot</description><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.13.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version><spring-cloud.version>Edgware.SR3</spring-cloud.version></properties><dependencies><!-- eureka client --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-eureka</artifactId></dependency><!-- ribbon依赖 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-ribbon</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

pom.xml

server:port: 9000spring:application:name: sb-cloud-producteureka:client:serviceUrl:defaultZone: http://localhost:8761/eureka/

application.yml

@SpringBootApplication
@EnableDiscoveryClient //开启服务注册
@EnableFeignClients   //开启Feign
public class SbCloudProductApplication {public static void main(String[] args) {SpringApplication.run(SbCloudProductApplication.class, args);}}


  • sb_cloud_order

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.huarui</groupId><artifactId>sb_cloud_order</artifactId><version>0.0.1-SNAPSHOT</version><name>sb_cloud_order</name><description>Demo project for Spring Boot</description><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.13.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version><spring-cloud.version>Edgware.SR3</spring-cloud.version></properties><dependencies><!-- eureka client --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-eureka</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-feign</artifactId></dependency><!-- ribbon依赖 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-ribbon</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

pom.xml

server:port: 9001spring:application:name: sb-cloud-ordereureka:client:serviceUrl:defaultZone: http://localhost:8761/eureka/

application.yml

@Configuration
public class RestTemplateConfig {@Bean@LoadBalancedpublic RestTemplate restTemplate(){return new RestTemplate();}}

@FeignClient(name = "sb-cloud-product")
public interface ProductRemote {/*** name:远程服务名,即spring.application.name配置的名称*类中的方法和远程服务中contoller中的方法名和参数需保持一致** @return*/@GetMapping(value = "/product/getMsg")public Map<String,String> getMsg();
}

  • RestTemplate三种访问服务端口接口方法
@RestController@RequestMapping("/order")public class OrderCtrl {

@Autowired private LoadBalancerClient loadBalancerClient;

@Autowired private RestTemplate restTemplate2;

@Autowired private ProductRemote productRemote;

/** * RestTemplate 三种使用方式 * @return */ @RequestMapping("/getProduct")public Map<String,String> getProduct(){

//http://localhost:9000/product/getMsg

 RestTemplate restTemplate = new RestTemplate();//1.第一种方式(直接通过地址访问) //Map<String,String> map = restTemplate.getForObject("http://localhost:9000/product/getMsg", Map.class);

 //2.第二种方式(利用loadBalancerClient通过应用名获取url) /*ServiceInstance serviceInstance = loadBalancerClient.choose("sb-cloud-product"); String url = String.format("http://%s:%s", serviceInstance.getHost(), serviceInstance.getPort() + "/product/getMsg"); Map<String,String> map = restTemplate.getForObject(url, Map.class);*/

 //3.第三种方式(通过@LoadBalanced注解让restTemplate获得负载均衡能力 访问接口时使用应用名字) Map<String,String> map = restTemplate2.getForObject("http://sb-cloud-product:9000/product/getMsg", Map.class);

return map;

 }

  /* 通过feign 远程访问sb_cloud_product 服务 */@GetMapping("/feign/getProduct")public Map<String,String> feignGetProduct(){return productRemote.getMsg(); }

}
 

转载于:https://www.cnblogs.com/youxiu326/p/Feign.html

SpringCloud个人笔记-02-Feign初体验相关推荐

  1. PyTorch学习笔记:PyTorch初体验

    PyTorch学习笔记:PyTorch初体验 一.在Anaconda里安装PyTorch 1.进入虚拟环境mlcc 2.安装PyTorch 二.在PyTorch创建张量 1.启动mlcc环境下的Spy ...

  2. Python学习笔记:pandas初体验

    Python学习笔记:pandas初体验 一.安装pandas模块 1.安装Python3.7 注意:必须勾选pip(python install package). 2.配置环境变量 3.下载 pa ...

  3. Vue快速上手笔记1 - 使用初体验

    Vue快速上手笔记1 - 使用初体验 博主:李俊才 邮箱:291148484@163.com 若本文中存在的错误请告知博主更正 希望对大家有所帮助 专题目录:https://blog.csdn.net ...

  4. SpringCloud与Seata分布式事务初体验

    在本篇文章中我们在SpringCloud环境下通过使用Seata来模拟用户购买商品时由于用户余额不足导致本次订单提交失败,来验证下在MySQL数据库内事务是否会回滚. 本章文章只涉及所需要测试的服务列 ...

  5. [享学Feign] 一、原生Feign初体验,Netflix Feign or Open Feign?

    生命太短暂,不要去做一些根本没有人想要的东西.本文已被 https://www.yourbatman.cn 收录,里面一并有Spring技术栈.MyBatis.JVM.中间件等小而美的专栏供以免费学习 ...

  6. mysql初体验学习笔记_MySQL数据库初体验

    克隆表,将数据表的数据记录生成到新的表中 方法一: create table test01 like GCC01; #通过 LIKE 方法,复制GCC01表结构生成test01表 insert int ...

  7. (linux自学笔记)linux系统初体验与编程基础

    原文出处: http://www.cnblogs.com/hebaichuanyeah/ 接触linux几天时间.感觉快要完全放弃IDE和图形界面了--虽然个人感觉IDE方便很多. 关于gcc gcc ...

  8. CSS学习笔记——动画animation初体验(小熊案例)

    文章目录 一.动画概念 二.动画基本用法 1.动画模板 2.动画的使用 3.小熊案例 总结 一.动画概念 动画是CSS3的一个重要用法,动画使元素逐渐从一种样式变为另一种样式.您可以随意更改任意数量的 ...

  9. MySQL 02 初体验

    MySQL 02 初体验 文章目录 MySQL 02 初体验 一.学习目标 二.MySQL简介 三.MySQL服务启动与关闭 四.MySQL登录 五.MySQL配置文件 六.MySQL安装目录 七.M ...

  10. 无人驾驶笔记系列(四):Fast-RTPS初体验

    无人驾驶笔记系列(四):Fast-RTPS初体验 背景介绍 ROS1在节点启动前,必须通过roscore启动一个master节点,通过master管理节点之间的通信.这样master节点如果出现问题, ...

最新文章

  1. Linux-C-Program:makefile
  2. Nebula3 渲染系统
  3. 结对-结对编项目作业名称-需求分析
  4. vue路由跳转报错解决
  5. C#基础(四)--值类型和引用类型,栈和堆的含义
  6. java三个整型变量_初值自定义.if按由小到大的顺序输出这三个数_C语言实现3个数从小到大排序/输出的方法示例...
  7. 【python】for..range练习 与函数的练习题
  8. WinForm中TextBox的几个基本技巧
  9. 惠普m132nw清零方法_惠普132nw硒鼓型号怎么加墨 惠普132硒鼓芯片清零
  10. BT下载4K电影、视频
  11. FAST FW150R软件版本升级解决一些网页无法加载问题
  12. 交换机的工作原理是什么,它有什么功能与作用?
  13. linux26内核,基于AT91RM9200与LINUX2.6.26内核的嵌入式平台开发全过程
  14. 对List中的map的key按中文拼音进行排序。
  15. 解决微信小程序IOS中使用picker弹出内容和手机软键盘重叠的问题
  16. 操作系统——如何求磁盘的物理地址
  17. Oracle与SQLserver区别
  18. DevOps流水线(1)什么是Pipeline流水线?
  19. luna服务器维护,luna洗脸仪发霉怎么办 日常使用完要保持干燥
  20. 极光推送集成厂商通道(java)

热门文章

  1. 如何在SAP云平台上创建Redis实例
  2. LR录制脚本中文乱码问题
  3. 二维碰撞检测matlab,二维平面内的碰撞检测【二】
  4. 【linux】服务器运维必备之linux常用命令合集
  5. android文件管理器,ES文件浏览器(com.estrongs.android.pop) - 4.2.4.6.1 - 应用 - 酷安
  6. 最长连续序列Python解法
  7. 树莓派支持uvi协议吗_树莓派开发笔记(十一):蓝牙的使用,BlueZ协议(双树莓探测rssi并通过蓝牙互传获取的rssi)...
  8. htmlselect保留上次选择内容_中药口服液药液性质与过滤器械选择
  9. mysql 存储过程 查询结果 循环_在存储过程中从查询结果集中怎么循环
  10. nginx 加路由时报错_Nginx自定义模块编写:根据post参数路由到不同服务器