使用idea从零编写SpringCloud项目-Ribbo
git:https://github.com/bmdcheng/product_server
git:https://github.com/bmdcheng/order_server
1.需要创建两个项目注册到eureka,然后来进行调用展示效果
2.首先创建product_server

3.选择相应的依赖

4.编写一个controller,用于提供服务
package com.example.product_server_test.controller; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; @RestController
@RequestMapping("/api/product")
public class ProductController { @RequestMapping("findAll")
public Object findAll(){
return getData();
} /**
* 模拟数据
* @return
*/
public List<Map<String,Object>> getData(){
List<Map<String,Object>> list = new ArrayList<>(); for (int i =0;10<i;i++){
Map<String,Object> map = new HashMap<String,Object>();
map.put("id", String.valueOf(i));
map.put("Name", "商品"+i);
map.put("price", i*100);
map.put("weight", i*200);
list.add(map);
}
return list;
} }
4.修改product_server的的配置文件application.yml
server:
port: 8771
#指定注册中心
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka/
#服务的名称
spring:
application:
name: product-service-test
5.启动应用,然后到eureka中查看注册的produc_server,http://localhost:8761/

6.再创建一个order_server,用ribbon调用product_server

7.勾选对应的依赖,小知识点,当spring boot版本过高时,就用不了ribbon了,所以调低一点springboot版本就可以选择ribbon依赖了

8.修改order_server中的启动类增加如下代码
@Bean
//@Bean 将该对象交由spring ioc管理
@LoadBalanced
//@增加负载均衡策略
public RestTemplate restTemplate(){
return new RestTemplate();
}
9.修改application.yml配置文件
server:
port: 8781
#指定注册中心
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka/
#服务的名称
spring:
application:
name: order-service
10.写一个controller
package com.example.order_server_test; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate; import java.util.List; @RestController
@RequestMapping("/api/order")
public class controller { @Autowired
private RestTemplate restTemplate; @RequestMapping("/findAllProduct")
public Object findAllProduct(){
List list = restTemplate.getForObject("http://product-service/api/product/findAll", List.class); return list;
}
}
11.然后在页面使用连接访问
http://localhost:8781/api/order/findAllProduct
12.看到结果了,完事。

13.总结一下流程
创建服务提供方,引入web,eureka-client,修改配置文件,设置服务的端口,服务的名称,注册中心的地址。
创建服务消费方,引入web,eureka-client,ribbon依赖,修改配置文件,设置服务的端口,服务的名称,注册中心的地址,使用@LoadBalanced注解,然后使用restTemplate调连接,拿返回值
使用idea从零编写SpringCloud项目-Ribbo的更多相关文章
- 从零构建Java项目(Maven+SpringBoot+Git) #02 奥斯丁项目
前两天我说要写个项目来持续迭代,有好多小伙伴都表示支持和鼓励,项目的第一篇这不就来了么~我给项目取了个名字,英文名叫做:austin,中文名叫做:奥斯丁 名字倒没有什么特别的含义,我单纯觉得这个名字好 ...
- 从零搭建一个SpringCloud项目之Feign搭建
从零搭建一个SpringCloud项目之Feign搭建 工程简述 目的:实现trade服务通过feign调用user服务的功能.因为trade服务会用到user里的一些类和接口,所以抽出了其他服务需要 ...
- CSharpGL(34)以从零编写一个KleinBottle渲染器为例学习如何使用CSharpGL
CSharpGL(34)以从零编写一个KleinBottle渲染器为例学习如何使用CSharpGL +BIT祝威+悄悄在此留下版了个权的信息说: 开始 本文用step by step的方式,讲述如何使 ...
- docker初体验:Docker部署SpringCloud项目eureka-server
Docker部署SpringCloud项目eureka-server 1 创建eureka-server工程 创建父工程cloud-demo,其pom.xml如下: <?xml version= ...
- 在Android上编写模块化项目(翻译)
来源博客:Wang Jie's Blog 本文链接:http://blog.wangjiegulu.com/2018/02/13/writing_a_modular_project_on_androi ...
- idea创建springcloud项目图文教程(EurekaServer注册中心)
http://blog.csdn.net/hcmony/article/details/77854999 idea创建springcloud项目图文教程(EurekaServer注册中心)(六) 1, ...
- SpringCloud项目,接口调用返回http 500 - Internal Server Error的错误
今天上班的时候,自己正在参与的Spring Cloud项目出现了问题,原本上周五还正常的项目突然所有接口调用都是返回http 500的错误. 项目的状态是在Eureka上可以看到对应微服务是在线状态, ...
- 一起来学Spring Cloud | 第一章 :如何搭建一个多模块的springcloud项目
在spring cloud系列章节中,本来已经写了几个章节了,但是自己看起来有些东西写得比较杂,所以重构了一下springcloud的章节内容,新写了本章节,先教大家在工作中如何搭建一个多模块的spr ...
- Nacos(四):SpringCloud项目中接入Nacos作为配置中心
前言 通过前两篇文章: Nacos(二):Nacos与OpenFeign的对接使用 Nacos(三):SpringCloud项目中接入Nacos作为注册中心 相信大家已经对Nacos作为注册中心的基本 ...
- springcloud项目配置拓展从本地config目录加载
本文受阿里开源的Nacos启发,应用启动后从Nacos服务加载配置到应用中,想着本地开发的时候加载配置能否从本地存储中加载,这样也能加快开发效率 首先我们来看下SpringCloud项目应用Nacos ...
随机推荐
- shell语句记录
sed篇: 1. 删除指定的字符,比如 'a'-----$ sed 's/a//' file 2. 移除每一行的第一个字符----$ sed 's/^.//' file 3. 移除每一行的最后一个字符 ...
- node_modules修改?
1.直接改node_modules的内容..... 但是下次npm i之后那个包的代码又恢复原状 2.独立维护需要改的包 把需要改的包复制下来,修改,推送到npm上. 项目里用新包即可,但是增加了维护 ...
- Redis缓存雪崩,击穿和穿透
这三个问题的发生,会导致大量的请求直接积压到数据库,如果并发量很大,则可能会导致数据库宕机或故障. 缓存雪崩 描述:大量的请求无法在redis缓存中进行处理而被发送到数据库,导致数据库压力陡增. ...
- 面试之AQS
https://blog.csdn.net/wwwzhouzy/article/details/119702170 https://copyfuture.com/blogs-details/20200 ...
- TP5--数据库基本操作
/** * 插入数据 * 执行成功返回影响数据的条数,执行失败返回false */ //添加一条数据 $data = [ 'name'=>'wangwu', 'pwd'=>123456 ] ...
- elasticSearch(五)--排序
1.字段值排序 2.多级排序 3.字符串参数排序 GET /_search?sort=date:desc&sort=_score&q=search
- video.js 苹果手机设置了currentTime却还是从头播放?
最近在项目(方案大赛)中需要保存学习进度,用户再打开页面时会从上次的视频进度继续观看.我们使用了video.js,在PC浏览器和安卓手机上均可以跳转,但是苹果手机很顽固的从头开始了呢-- 后来我们在 ...
- 修改 input框、textarea框的placeholder样式
/* 设置input框提示内容的样式 */ input::-webkit-input-placeholder { font-size: 14px; color: #ccc; font-weight: ...
- leetcode 94. 二叉树的中序遍历【时间击败99.19%】 【内存击败39.48%】
public List<Integer> inorderTraversal(TreeNode root) { ArrayList<Integer>al=new ArrayLis ...
- linux用户账户与组账户,文件权限及归属管理
Linux是一个多用户, 多任务多进程的服务器操作系统 用户角色:超级用户(管理员),普通用户,程序用户 用户账号管理用户账号概述用户:使用者在计算机内部的身份标识 用户账号的常见分类:超级用户: r ...