java springcloud版b2b2c社交电商spring cloud分布式微服务-docker-feign(四)
简介
Spring Cloud大型企业分布式微服务云构建的B2B2C电子商务平台源码请加企鹅求求:一零三八七七四六二六。上一节,我们讨论了怎么通过,restTemlate调用cloud的生产者,实现起来还是比较复杂的,尤其是在消费复杂的Restful服务的时候,还需要进行一系列的转换,编解码等,使用Feign就完全不用考虑这个问题.。
一、feinn介绍
Feign是一种声明式、模板化的HTTP客户端。在Spring Cloud中使用Feign, 我们可以做到使用HTTP请求远程服务时能与调用本地方法一样的编码体验,开发者完全感知不到这是远程方法,更感知不到这是个HTTP请求,这整个调用过程和Dubbo的RPC非常类似。开发起来非常的优雅。
二、创建模块(microservice-consumer-movie-feign)
项目结构如下:
三、pom.xml
<?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"><parent><artifactId>microservice-spring-cloud</artifactId><groupId>com.jacky</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>microservice-consumer-movie-feign</artifactId><packaging>jar</packaging><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-eureka</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-feign</artifactId></dependency><!--<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-oauth2</artifactId></dependency>--></dependencies><build><plugins><plugin><groupId>com.spotify</groupId><artifactId>docker-maven-plugin</artifactId><executions><!--设置在执行maven 的install时构建镜像--><execution><id>build-image</id><phase>install</phase><goals><goal>build</goal></goals></execution></executions><configuration><!--安装了docker的主机,并且打开了api remote接口设置--><dockerHost>http://192.168.6.130:5678</dockerHost><pushImage>true</pushImage><!--设置上传镜像到私有仓库,需要docker设置指定私有仓库地址--><!--镜像名称--><imageName>${docker.repostory}/${docker.image.prefix}/${project.artifactId}:${project.version}</imageName><!--镜像的基础版本--><baseImage>java:openjdk-8-jdk-alpine</baseImage><!--镜像启动参数--><entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint><resources><resource><targetPath>/</targetPath><directory>${project.build.directory}</directory><include>${project.build.finalName}.jar</include></resource></resources></configuration></plugin></plugins></build> </project>
四、配置文件application.yml
spring:application:name: microservice-consumer-movie-feign server:port: 7901 eureka:client:healthcheck:enabled: trueserviceUrl:defaultZone: http://jacky:admin@peer1:8761/eureka/,http://jacky:admin@peer2:8762/eureka/,http://jacky:admin@peer3:8763/eureka/ instance:prefer-ip-address: trueinstance-id: ${spring.application.name}:${spring.cloud.client.ipAddress}:${spring.application.instance_id:${server.port}}
五、MovieController.java
package com.jacky.cloud.controller;import com.jacky.cloud.entity.User; import com.jacky.cloud.feign.UserFeignClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.client.RestTemplate;/*** Created by jacky on 2017/7/14.*/ @RestController public class MovieController {@Autowiredprivate UserFeignClient userFeignClient;@GetMapping("/movie/{id}")public User findById(@PathVariable Long id) {return this.userFeignClient.findById(id);}@GetMapping("/test")public User testPost(User user) {return this.userFeignClient.postUser(user);}@GetMapping("/test-get")public User testGet(User user) {return this.userFeignClient.getUser(user);} }
六、实体类User.java
package com.jacky.cloud.entity;import java.math.BigDecimal;public class User {private Long id;private String username;private String name;private Short age;private BigDecimal balance;public Long getId() {return this.id;}public void setId(Long id) {this.id = id;}public String getUsername() {return this.username;}public void setUsername(String username) {this.username = username;}public String getName() {return this.name;}public void setName(String name) {this.name = name;}public Short getAge() {return this.age;}public void setAge(Short age) {this.age = age;}public BigDecimal getBalance() {return this.balance;}public void setBalance(BigDecimal balance) {this.balance = balance;}}
七、UserFeignClient.java
package com.jacky.cloud.feign;import com.jacky.cloud.entity.User; import org.springframework.cloud.netflix.feign.FeignClient; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod;/*** Created by jacky on 2017/7/14.*/ @FeignClient("microservice-provider-user") public interface UserFeignClient {/*** 根据Id获得User* 两个坑:1. @GetMapping不支持 2. @PathVariable得设置value* @param id* @return*/@RequestMapping(value = "/simple/{id}", method = RequestMethod.GET)public User findById(@PathVariable("id") Long id);@RequestMapping(value = "/user", method = RequestMethod.POST)public User postUser(@RequestBody User user);// 该请求不会成功,只要参数是复杂对象,即使指定了是GET方法,feign依然会以POST方法进行发送请求。可能是我没找到相应的注解或使用方法错误。// 也就是说复杂对象,feign一定要post的请求方式@RequestMapping(value = "/get-user", method = RequestMethod.GET)public User getUser(User user); }
八、启动类(MicroserviceSimpleConsumerMovieApplication.java)
package com.jacky.cloud;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.EnableEurekaClient; import org.springframework.cloud.netflix.feign.EnableFeignClients; import org.springframework.context.annotation.Bean; import org.springframework.web.client.RestTemplate;@SpringBootApplication @EnableEurekaClient @EnableFeignClients public class MicroserviceSimpleConsumerMovieApplication {public static void main(String[] args) {SpringApplication.run(MicroserviceSimpleConsumerMovieApplication.class, args);} }
需要JAVASpring Cloud大型企业分布式微服务云构建的B2B2C电子商务平台源码请加企鹅求求:一零三八七七四六二六
标签:springcloud,spring cloud,springcloud微服务,b2b2c,o2o电子商务,java多用户商城系统
转载于:https://www.cnblogs.com/sunnysunny/p/10836932.html
java springcloud版b2b2c社交电商spring cloud分布式微服务-docker-feign(四)相关推荐
- (十六)java springcloud版b2b2c社交电商spring cloud分布式微服务-使用spring cloud Bus刷新配置...
b2b2c电子商务社交平台源码请加企鹅求求:一零三八七七四六二六.我们使用spring cloud分布式微服务云架构做了b2b2c的电子商务系统,除了架构本身自带的系统服务外,我们将b2b2c的业务服 ...
- java springcloud版b2b2c社交电商spring cloud分布式微服务 (七)高可用的分布式配置中心(Spring Cloud Config)...
Springcloud b2b2c电子商务社交平台源码请加企鹅求求:一零三八七七四六二六.讲述了一个服务如何从配置中心读取文件,配置中心如何从远程git读取配置文件,当服务实例很多时,都从配置中心读取 ...
- java springcloud版b2b2c社交电商spring cloud分布式微服务(十三)断路器聚合监控(Hystrix Turbine)...
Spring cloud b2b2c电子商务社交平台源码请加企鹅求求:一零三八七七四六二六.讲述了如何利用Hystrix Dashboard去监控断路器的Hystrix command.当我们有很多个 ...
- java springcloud版b2b2c社交电商spring cloud分布式微服务 (四) 断路器(Hystrix)
一.断路器简介 电子商务社交平台源码请加企鹅求求:一零三八七七四六二六 Netflix开源了Hystrix组件,实现了断路器模式,SpringCloud对这一组件进行了整合. 在微服务架构中,一个请求 ...
- java springcloud版b2b2c社交电商spring cloud分布式微服务(十五)Springboot整合RabbitMQ...
电子商务社交平台源码请加企鹅求求:三五三六二四七二五九. 这篇文章带你了解怎么整合RabbitMQ服务器,并且通过它怎么去发送和接收消息.我将构建一个springboot工程,通过RabbitTemp ...
- java spring cloud版b2b2c社交电商spring cloud分布式微服务:分布式配置中心
JAVASpring Cloud大型企业分布式微服务云构建的B2B2C电子商务平台源码请加企鹅求求:一零三八七七四六二六.Spring Cloud Config是Spring Cloud团队创建的一个 ...
- java版b2b2c社交电商spring cloud分布式微服务-服务提供与调用
java版b2b2c社交电商spring cloud分布式微服务源码请加企鹅求求:一零三八七七四六二六.上一篇文章我们介绍了eureka服务注册中心的搭建,这篇文章介绍一下如何使用eureka服务注册 ...
- java spring cloud版b2b2c社交电商spring cloud分布式微服务-docker-feign-hystrix(六)
简介 springcloud电子商务社交平台源码请加企鹅求求:一零三八七七四六二六.上一节我们讨论feign的配置,这节我们讨论一下,feign+hystrix调用生产者时,进行容错处理. 一.创建模 ...
- java版b2b2c社交电商spring cloud分布式微服务:服务消费(Ribbon)
Spring Cloud Ribbon 电子商务社交平台源码请加企鹅求求:一零三八七七四六二六Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具.它 ...
最新文章
- C++标准库math
- Nat. Mach. Intell. | 人工智能的透明度和可重复性
- Web服务器HttpServer(嵌入式设备)
- 通过Python实现马尔科夫链蒙特卡罗方法的入门级应用
- 如何使用vps 异地组网_使用ZEROTIER异地组建内网(局域网)
- AUTOSAR从入门到精通-AUTOSAR PPT介绍
- linux两个卷组可以合并,Linux系统中所有的逻辑卷必须属于同一个卷组()。
- 安卓逆向系列教程 4.4 逆向云播 VIP
- c语言枚举和结构体的区别,全面了解结构体、联合体和枚举类型
- oracle高级函数api,Oracle函数-高阶篇
- 【Prison Break】第二天(3.28)
- 中兴B860AV2.1-A,M,T-当贝纯净桌面-线刷固件(附刷机教程)
- 【专题】拉格朗日中值定理求极限
- 软件自动化测试框架STAF概述
- Vue -Ts入门 (一)
- 体验共享单车后对于Locman技术实现的几点思考
- 对字符串进行信道编码C语言,【单选题】PCM编码主要用于实现模拟信号数字化,它属于( )
A. 信道编码 B. 纠错编码 C. 信源编码 D. 压缩编码...
- fsleyes -- 一款多功能影像数据查看器
- springboot 单元测试使用 @value读取不到值, yml的两个坑
- 王者荣耀角色注销后我的服务器列表怎么删除,王者荣耀账号怎么注销 角色删除流程要求...
热门文章
- boost::log模块实现从设置文件初始化库的示例,具有自定义过滤器和格式化程序工厂的属性
- boost::intrusive::smart_ptr用法的测试程序
- boost::hana::detail::unpack_flatten用法的测试程序
- boost::hana::sum用法的测试程序
- boost::core模块实现交换primitive
- Boost:gzifstream和gzofstream的测试程序
- ITK:无写访问权限下遍历具有邻域的图像区域
- VTK:图片之ImageMedian3D
- VTK:图表之VisualizeGraph
- VTK:几何对象之OpenVRTessellatedBoxSource