从零搭建一个SpringCloud项目之Feign搭建
从零搭建一个SpringCloud项目之Feign搭建
工程简述

目的:实现trade服务通过feign调用user服务的功能。因为trade服务会用到user里的一些类和接口,所以抽出了其他服务需要的东西到user-api工程。避免trade直接依赖user导致依赖多余的东西。
一、创建User接口工程user-api
- 新建一个module,取名为study-user-api
- 引入pom文件
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
</dependencies>
- 创建一个User实体类
- 编写一个UserApi接口,value里的study-user对应后面user实现工程的spring.application.name的值
@FeignClient(value = "study-user")
public interface UserApi {
@RequestMapping(value = "/getUserById",method = RequestMethod.GET)
User getUserById(Integer id);
}
二、创建User实现工程
- 创建一个module用于对user接口提供实现,项目名为study-user
- 加入pom依赖
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 本地依赖-->
<dependency>
<artifactId>study-user-api</artifactId>
<groupId>com.mmc</groupId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
- 配置文件
server.port=8003
#注册到eureka服务端的微服务名称
spring.application.name=study-user
#注册到eureka服务端的地址
#eureka.client.service-url.defaultZone=http://localhost:9000/eureka/
security.login.username=root
security.login.pass=123456789
eureka.client.service-url.defaultZone=http://${security.login.username}:${security.login.pass}@localhost:9000/eureka/
#点击具体的微服务,是否显示ip
eureka.instance.prefer-ip-address=true
eureka.instance.instance-id=study-user-8003
- 写user接口实现,一个UserController
@RestController
@RequestMapping("/user")
public class UserController {
@RequestMapping("/getUserById")
public User getUserById(Integer id){
User user = new User();
user.setId(1);
user.setName("小明");
return user;
}
}
三、创建交易工程
- 新建一个module,项目名为study-trade
- 引入pom依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<!-- 本地依赖-->
<dependency>
<artifactId>study-user-api</artifactId>
<groupId>com.mmc</groupId>
<version>1.0-SNAPSHOT</version>
</dependency>
- 编写配置文件
server.port=8005
#注册到eureka服务端的微服务名称
spring.application.name=study-trade
#注册到eureka服务端的地址
#eureka.client.service-url.defaultZone=http://localhost:9000/eureka/
security.login.username=root
security.login.pass=123456789
eureka.client.service-url.defaultZone=http://${security.login.username}:${security.login.pass}@localhost:9000/eureka/
#点击具体的微服务,是否显示ip
eureka.instance.prefer-ip-address=true
eureka.instance.instance-id=study-trade-8005
- 写controller调用user服务
/**
* @description:
* @author: mmc
* @create: 2020-04-05 11:41
**/
@RestController
@RequestMapping("/trade")
public class TradeController {
@Autowired
private UserApi userApi;
@RequestMapping(value = "/testTrade/{userid}",method = RequestMethod.GET)
public String testTrade(@PathVariable Integer userid){
User user= userApi.getUserById(userid);
String name = user.getName();
System.out.println("用户"+name+"下单成功....");
return "用户"+name+"下单成功";
}
}
- 启动类配置启用feign注解
@SpringBootApplication
@EnableFeignClients(basePackages = "com.mmc.user")
public class TradeApplication {
public static void main(String[] args) {
SpringApplication.run(TradeApplication.class);
}
}
- 测试
依次启动eureka Server,user工程,trade工程。输入网址测试
github地址:https://github.com/mmcLine/spring-cloud-study
从零搭建一个SpringCloud项目之Feign搭建的更多相关文章
- 从零搭建一个SpringCloud项目之Config(五)
配置中心 一.配置中心服务端 新建项目study-config-server 引入依赖 <dependency> <groupId>org.springframework.cl ...
- 从零搭建一个SpringCloud项目之Zuul(四)
整合Zuul 为什么要使用Zuul? 易于监控 易于认证 减少客户端与各个微服务之间的交互次数 引入依赖 <dependency> <groupId>org.springfra ...
- 一个node项目的框架搭建流程
项目服务端编程语言node,前端js,数据库mongodb, 开发工具用webstorm. 使用express应用生成器,生成项目雏形. 安装应用生成器工具,命令是npm install expres ...
- vue-用Vue-cli从零开始搭建一个Vue项目
Vue是近两年来比较火的一个前端框架(渐进式框架吧). Vue两大核心思想:组件化和数据驱动.组件化就是将一个整体合理拆分为一个一个小块(组件),组件可重复使用:数据驱动是前端的未来发展方向,释放了对 ...
- 基于 Express 搭建一个node项目 - 起步
一,如何基于 Express 搭建一个node项目 什么是Express 借用官方的介绍,Express是一个基于Node.js平台的极简.灵活的web应用开发框架,它提供了一系列强大的特性,帮助你创 ...
- 从零开始搭建一个react项目
Nav logo 120 发现 关注 消息 4 搜索 从零开始搭建一个react项目 96 瘦人假噜噜 2017.04.23 23:29* 字数 6330 阅读 32892评论 31喜欢 36 项目地 ...
- 完整搭建一个vue项目
目录 一. 搭建一个vue项目的完整步骤 二. 卸载vue-cli 三. 完全卸载webpack 一. 搭建一个vue项目的完整步骤 1.安装node.js 下载地址 # 检查是否安装成功 node ...
- 从零搭建一个IdentityServer——项目搭建
本篇文章是基于ASP.NET CORE 5.0以及IdentityServer4的IdentityServer搭建,为什么要从零搭建呢?IdentityServer4本身就有很多模板可以直接生成一个可 ...
- vuejsLearn---通过手脚架快速搭建一个vuejs项目
开始快速搭建一个项目 通过Webpack + vue-loader 手脚架 https://github.com/vuejs-templates/webpack 按照它的步骤一步一步来 $ npm i ...
随机推荐
- Hibernate入门之注解@Column详解
前言 上一节我们讲解了Hibernate的主键生成策略,本节我们继续来讲讲Hibernate中针对列的映射即@Column注解,文中若有错误之处,还望指正. @Column注解详解 我们看到如上针对列 ...
- 差分放大电路的CMRR与输入电阻分析
分析了经典差分放大电路的共模抑制比CMRR与输入电阻RIN 1.经典差分放大电路 基于运放的经典差分放大电路在各模电教材中均能找到,利用分离电阻和运算放大器实现,如图1所示为一种差分放大电路: 图1 ...
- eslint webpack2 vue-loader配置
eslint是一个代码检测工具 官网如下http://eslint.cn/ npm install eslint --save-dev 需要这几个npm包: eslint eslint-loader ...
- CSS的常用单位 %和 vw vh 和 box-sizing:border-box; 和flex简介
一.% 理解: %号是CSS中的常用单位,它是相对于父容器而言的.如:一个父容器的宽是100px,给它的子元素一个10%,那么子元素的宽就是100px的10% 10px. 效果图: (利用%设置了li ...
- Ant-design-pro的动态菜单的实现
页面效果: 如何实现: 1:分别建立SiderMenu和SubMenu组件 2.去and-desingn-vue的官方文档里copy单文件递归菜单的代码https://www.antdv.com/co ...
- Javascript中String()和new String()的区别——JS的包装对象
最近在看Symbol不能使用new操作符,然后类比到Number,String,Boolean,因为它们同属于基本类型,但是有有所差异:Number,String,Boolean是可以使用new操作符 ...
- ASP.NET Core身份认证服务框架IdentityServer4 介绍
IdentityServer4是ASP.NET Core 2的OpenID Connect和OAuth 2.0框架.它可以在您的应用程序中提供以下功能: 它使你的应用程序具有如下特点: 认证即服务 适 ...
- C语言程序设计(十三) 文件操作
第十三章 文件操作 文本文件:将数值型数据的每一位数字作为一个字符以其ASCII码的形式存储(每一位数字都单独占用一个字节的存储空间) 二进制文件:数据值是以二进制形式存储的 文本文件可以方便地被其他 ...
- vue新窗口跳转路由
this.$router.push()方法我在这就不多说了: 看代码: let newUrl = this.$router.resolve({ path: '/test/test' ...
- java web 中base64传输的坑
今天在项目中,前端需要向后端发送一张图片,使用toDataURL方法以base64编码的形式传输,在写好程序后,发现报错为base64不是有效的图片,反复排查后发现接口需要一张格式为png的图片,在前 ...