SpringCloud个人笔记-02-Feign初体验
- 项目结构
- 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初体验相关推荐
- PyTorch学习笔记:PyTorch初体验
PyTorch学习笔记:PyTorch初体验 一.在Anaconda里安装PyTorch 1.进入虚拟环境mlcc 2.安装PyTorch 二.在PyTorch创建张量 1.启动mlcc环境下的Spy ...
- Python学习笔记:pandas初体验
Python学习笔记:pandas初体验 一.安装pandas模块 1.安装Python3.7 注意:必须勾选pip(python install package). 2.配置环境变量 3.下载 pa ...
- Vue快速上手笔记1 - 使用初体验
Vue快速上手笔记1 - 使用初体验 博主:李俊才 邮箱:291148484@163.com 若本文中存在的错误请告知博主更正 希望对大家有所帮助 专题目录:https://blog.csdn.net ...
- SpringCloud与Seata分布式事务初体验
在本篇文章中我们在SpringCloud环境下通过使用Seata来模拟用户购买商品时由于用户余额不足导致本次订单提交失败,来验证下在MySQL数据库内事务是否会回滚. 本章文章只涉及所需要测试的服务列 ...
- [享学Feign] 一、原生Feign初体验,Netflix Feign or Open Feign?
生命太短暂,不要去做一些根本没有人想要的东西.本文已被 https://www.yourbatman.cn 收录,里面一并有Spring技术栈.MyBatis.JVM.中间件等小而美的专栏供以免费学习 ...
- mysql初体验学习笔记_MySQL数据库初体验
克隆表,将数据表的数据记录生成到新的表中 方法一: create table test01 like GCC01; #通过 LIKE 方法,复制GCC01表结构生成test01表 insert int ...
- (linux自学笔记)linux系统初体验与编程基础
原文出处: http://www.cnblogs.com/hebaichuanyeah/ 接触linux几天时间.感觉快要完全放弃IDE和图形界面了--虽然个人感觉IDE方便很多. 关于gcc gcc ...
- CSS学习笔记——动画animation初体验(小熊案例)
文章目录 一.动画概念 二.动画基本用法 1.动画模板 2.动画的使用 3.小熊案例 总结 一.动画概念 动画是CSS3的一个重要用法,动画使元素逐渐从一种样式变为另一种样式.您可以随意更改任意数量的 ...
- MySQL 02 初体验
MySQL 02 初体验 文章目录 MySQL 02 初体验 一.学习目标 二.MySQL简介 三.MySQL服务启动与关闭 四.MySQL登录 五.MySQL配置文件 六.MySQL安装目录 七.M ...
- 无人驾驶笔记系列(四):Fast-RTPS初体验
无人驾驶笔记系列(四):Fast-RTPS初体验 背景介绍 ROS1在节点启动前,必须通过roscore启动一个master节点,通过master管理节点之间的通信.这样master节点如果出现问题, ...
最新文章
- Linux-C-Program:makefile
- Nebula3 渲染系统
- 结对-结对编项目作业名称-需求分析
- vue路由跳转报错解决
- C#基础(四)--值类型和引用类型,栈和堆的含义
- java三个整型变量_初值自定义.if按由小到大的顺序输出这三个数_C语言实现3个数从小到大排序/输出的方法示例...
- 【python】for..range练习 与函数的练习题
- WinForm中TextBox的几个基本技巧
- 惠普m132nw清零方法_惠普132nw硒鼓型号怎么加墨 惠普132硒鼓芯片清零
- BT下载4K电影、视频
- FAST FW150R软件版本升级解决一些网页无法加载问题
- 交换机的工作原理是什么,它有什么功能与作用?
- linux26内核,基于AT91RM9200与LINUX2.6.26内核的嵌入式平台开发全过程
- 对List中的map的key按中文拼音进行排序。
- 解决微信小程序IOS中使用picker弹出内容和手机软键盘重叠的问题
- 操作系统——如何求磁盘的物理地址
- Oracle与SQLserver区别
- DevOps流水线(1)什么是Pipeline流水线?
- luna服务器维护,luna洗脸仪发霉怎么办 日常使用完要保持干燥
- 极光推送集成厂商通道(java)
热门文章
- 如何在SAP云平台上创建Redis实例
- LR录制脚本中文乱码问题
- 二维碰撞检测matlab,二维平面内的碰撞检测【二】
- 【linux】服务器运维必备之linux常用命令合集
- android文件管理器,ES文件浏览器(com.estrongs.android.pop) - 4.2.4.6.1 - 应用 - 酷安
- 最长连续序列Python解法
- 树莓派支持uvi协议吗_树莓派开发笔记(十一):蓝牙的使用,BlueZ协议(双树莓探测rssi并通过蓝牙互传获取的rssi)...
- htmlselect保留上次选择内容_中药口服液药液性质与过滤器械选择
- mysql 存储过程 查询结果 循环_在存储过程中从查询结果集中怎么循环
- nginx 加路由时报错_Nginx自定义模块编写:根据post参数路由到不同服务器