简介

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(四)相关推荐

  1. (十六)java springcloud版b2b2c社交电商spring cloud分布式微服务-使用spring cloud Bus刷新配置...

    b2b2c电子商务社交平台源码请加企鹅求求:一零三八七七四六二六.我们使用spring cloud分布式微服务云架构做了b2b2c的电子商务系统,除了架构本身自带的系统服务外,我们将b2b2c的业务服 ...

  2. java springcloud版b2b2c社交电商spring cloud分布式微服务 (七)高可用的分布式配置中心(Spring Cloud Config)...

    Springcloud b2b2c电子商务社交平台源码请加企鹅求求:一零三八七七四六二六.讲述了一个服务如何从配置中心读取文件,配置中心如何从远程git读取配置文件,当服务实例很多时,都从配置中心读取 ...

  3. java springcloud版b2b2c社交电商spring cloud分布式微服务(十三)断路器聚合监控(Hystrix Turbine)...

    Spring cloud b2b2c电子商务社交平台源码请加企鹅求求:一零三八七七四六二六.讲述了如何利用Hystrix Dashboard去监控断路器的Hystrix command.当我们有很多个 ...

  4. java springcloud版b2b2c社交电商spring cloud分布式微服务 (四) 断路器(Hystrix)

    一.断路器简介 电子商务社交平台源码请加企鹅求求:一零三八七七四六二六 Netflix开源了Hystrix组件,实现了断路器模式,SpringCloud对这一组件进行了整合. 在微服务架构中,一个请求 ...

  5. java springcloud版b2b2c社交电商spring cloud分布式微服务(十五)Springboot整合RabbitMQ...

    电子商务社交平台源码请加企鹅求求:三五三六二四七二五九. 这篇文章带你了解怎么整合RabbitMQ服务器,并且通过它怎么去发送和接收消息.我将构建一个springboot工程,通过RabbitTemp ...

  6. java spring cloud版b2b2c社交电商spring cloud分布式微服务:分布式配置中心

    JAVASpring Cloud大型企业分布式微服务云构建的B2B2C电子商务平台源码请加企鹅求求:一零三八七七四六二六.Spring Cloud Config是Spring Cloud团队创建的一个 ...

  7. java版b2b2c社交电商spring cloud分布式微服务-服务提供与调用

    java版b2b2c社交电商spring cloud分布式微服务源码请加企鹅求求:一零三八七七四六二六.上一篇文章我们介绍了eureka服务注册中心的搭建,这篇文章介绍一下如何使用eureka服务注册 ...

  8. java spring cloud版b2b2c社交电商spring cloud分布式微服务-docker-feign-hystrix(六)

    简介 springcloud电子商务社交平台源码请加企鹅求求:一零三八七七四六二六.上一节我们讨论feign的配置,这节我们讨论一下,feign+hystrix调用生产者时,进行容错处理. 一.创建模 ...

  9. java版b2b2c社交电商spring cloud分布式微服务:服务消费(Ribbon)

    Spring Cloud Ribbon 电子商务社交平台源码请加企鹅求求:一零三八七七四六二六Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具.它 ...

最新文章

  1. C++标准库math
  2. Nat. Mach. Intell. | 人工智能的透明度和可重复性
  3. Web服务器HttpServer(嵌入式设备)
  4. 通过Python实现马尔科夫链蒙特卡罗方法的入门级应用
  5. 如何使用vps 异地组网_使用ZEROTIER异地组建内网(局域网)
  6. AUTOSAR从入门到精通-AUTOSAR PPT介绍
  7. linux两个卷组可以合并,Linux系统中所有的逻辑卷必须属于同一个卷组()。
  8. 安卓逆向系列教程 4.4 逆向云播 VIP
  9. c语言枚举和结构体的区别,全面了解结构体、联合体和枚举类型
  10. oracle高级函数api,Oracle函数-高阶篇
  11. 【Prison Break】第二天(3.28)
  12. 中兴B860AV2.1-A,M,T-当贝纯净桌面-线刷固件(附刷机教程)
  13. 【专题】拉格朗日中值定理求极限
  14. 软件自动化测试框架STAF概述
  15. Vue -Ts入门 (一)
  16. 体验共享单车后对于Locman技术实现的几点思考
  17. 对字符串进行信道编码C语言,【单选题】PCM编码主要用于实现模拟信号数字化,它属于( ) A. 信道编码 B. 纠错编码 C. 信源编码 D. 压缩编码...
  18. fsleyes -- 一款多功能影像数据查看器
  19. springboot 单元测试使用 @value读取不到值, yml的两个坑
  20. 王者荣耀角色注销后我的服务器列表怎么删除,王者荣耀账号怎么注销 角色删除流程要求...

热门文章

  1. boost::log模块实现从设置文件初始化库的示例,具有自定义过滤器和格式化程序工厂的属性
  2. boost::intrusive::smart_ptr用法的测试程序
  3. boost::hana::detail::unpack_flatten用法的测试程序
  4. boost::hana::sum用法的测试程序
  5. boost::core模块实现交换primitive
  6. Boost:gzifstream和gzofstream的测试程序
  7. ITK:无写访问权限下遍历具有邻域的图像区域
  8. VTK:图片之ImageMedian3D
  9. VTK:图表之VisualizeGraph
  10. VTK:几何对象之OpenVRTessellatedBoxSource