当前位置: 首页 > news >正文

四川汉舟电力建设有限公司网站宁波黄页网

四川汉舟电力建设有限公司网站,宁波黄页网,52种新颖的促销方式,护肤品网站建设方案目录 1、在springcloud-order项目中引入Feign客户端的依赖 2、在server-order服务的启动类中添加注解EnableFeignClients 3、使用FeignClient注解声明Feign客户端需要调用的远程接口 3.1、server-pay服务提供远程接口Controller 3.2、server-member服务提供远程接口Contro…目录 1、在springcloud-order项目中引入Feign客户端的依赖 2、在server-order服务的启动类中添加注解EnableFeignClients 3、使用FeignClient注解声明Feign客户端需要调用的远程接口 3.1、server-pay服务提供远程接口Controller 3.2、server-member服务提供远程接口Controller 3.3、创建IPayService接口映射需要调用的pay服务提供的远程接口 3.4、创建IMemberService接口映射需要调用的member服务提供的远程接口 3.5、在controller中注入接口bean对象通过调用方法的形式直接调用服务提供者提供的远程接口更符合开发习惯 3.6、启动服务server-member、server-pay、server-order及server-eureka注册中心 4、OpenFeign客户端对参数的接收 4.1、使用注解RequestBody接收对象VO参数,否则接收不到传过来的参数 4.2、使用注解RequestParamxxx接收一个普通参数String/Integer 4.2.1、在服务提供方和服务调用方提供同样的注解RequestParam(xxx) 4.2.2、服务提供方不添加RequestParam(xxx)注解服务调用方添加RequestParam(xxx)注解但是xxx要与服务提供方的参数一致才能映射 4.3、使用PathVariable接收RESTFul请求路径上的参数 5、FeignClient优雅的使用方式 5.1、在父目录springcloud下创建聚合项目springcloud-api作为公共模块 5.2、在springcloud-api项目的pom文件中引入依赖 5.3、在springcloud-api项目里添加vo对象类和接口 5.4、Maven install项目到maven本地仓库 5.5、在服务提供方server-member和服务调用方server-order引入公共服务模块 5.6、server-member服务端(服务提供方)定义MemberController2 实现api项目中定义的接口 5.7、server-order客户端(服务调用方)定义接口继承api项目中定义的接口 在项目开发中一般访问远程服务接口时并不使用RestTemplate来做前面已经演示过了怎么通过RestTemplate来访问远程接口以及基于eureka注册中心的服务发现机制搭配RestTemplate访问远程接口而使用Feign客户端来访问远程接口是比较常见的做法其底层实现原理是RPC远程过程调用,同时feign客户端集成了ribbon 1、在springcloud-order项目中引入Feign客户端的依赖 dependenciesdependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-openfeign/artifactId/dependency /dependencies 2、在server-order服务的启动类中添加注解EnableFeignClients EnableFeignClients(basePackages course.springcloud) basePackages需要配置openfeign的包扫描路径,扫描FeignClient注解并初始化如果FeignClient注解的接口和启动类同一个路径下则不需要配置 3、使用FeignClient注解声明Feign客户端需要调用的远程接口 注意接口方法上的注解要与服务提供者提供的注解一致即请求方式要一致此外路径也要一致否则将映射不到请求 3.1、server-pay服务提供远程接口Controller RestController RequestMapping(/) public class PayController {Value(${server.port})private int port;GetMapping(/payInfo)public String getPayInfo() {return 当前端口为 port this is pay Info;} } 3.2、server-member服务提供远程接口Controller RestController RequestMapping(/member) public class MemberController {Value(${server.port})private int port;GetMapping(/memberInfo)public String memberInfo() {return 当前请求端口为 port this is Member Info;} } 3.3、创建IPayService接口映射需要调用的pay服务提供的远程接口 // value 配置服务提供者的应用名称或者service id // path配置请求的前缀即服务提供者类上的RequestMapping注解上的路径// 如果不加这个path前缀那么方法上的每个请求路径都要写完整请求的路径 FeignClient(value server-pay, path /) public interface IPayService {//该注解要与服务提供者的路径及请求方式保持一致请求方式是GetMapping、PostMapping还是其他否则映射不到GetMapping(/payInfo)String getPayInfo(); } 3.4、创建IMemberService接口映射需要调用的member服务提供的远程接口 // value 配置服务提供者的应用名称或者service id // path配置请求的前缀即服务提供者类上的RequestMapping注解上的路径 // 如果不加这个path前缀那么方法上的每个请求路径都要写完整请求的路径 // 例如下面例子所示则方法中的GetMapping要写成GetMapping(/member/memberInfo)如果方法比较多的话这么写就比较麻烦 FeignClient(value server-member, path /member) public interface IMemberService {//该注解要与服务提供者的路径及请求方式保持一致请求方式是GetMapping、PostMapping还是其他否则映射不到GetMapping(/memberInfo)String getMemberInfo(); } 3.5、在controller中注入接口bean对象通过调用方法的形式直接调用服务提供者提供的远程接口更符合开发习惯 RestController RequestMapping(/order) public class OrderController {Autowiredprivate IMemberService iMemberService;Autowiredprivate IPayService iPayService;//使用OpenFeign访问server-member服务的远程接口 /member/memberInfoGetMapping(/getMember)public String getMember() {return iMemberService.getMemberInfo();}//使用OpenFeign访问server-pay服务的远程接口 /payInfoGetMapping(/getPay)public String getPay() {return iPayService.getPayInfo();} } 3.6、启动服务server-member、server-pay、server-order及server-eureka注册中心 3.7、访问接口localhost:9071/order/getPay 3.8、访问接口 localhost:9071/order/getMember 4、OpenFeign客户端对参数的接收 4.1、使用注解RequestBody接收对象VO参数,否则接收不到传过来的参数 在server-order、server-member下新增memberVO.class用来设置和接收参数 如果使用了Lombok插件,可以通过注解Accessors(chaintrue)开启链式编程 设置参数时可以简写为New memberVO().setAge(18).setName(张三) public class memberVO {private Integer age;private String name;public Integer getAge() {return age;}public void setAge(Integer age) {this.age age;}public String getName() {return name;}public void setName(String name) {this.name name;}Overridepublic String toString() {return memberVO{ age age , name name \ };} } 在server-member下的MemberController.class添加addMember方法用来处理新增请求。 RestController RequestMapping(/member) public class MemberController {PostMapping(/addMember)public String addMember(memberVO memberVO) {System.out.println(memberVO.toString());return add member success;} } 在server-order下的IMemberService 接口配置feign客户端请求server-member下的远程接口member/addMember // value 配置服务提供者的应用名称或者service id // path配置请求的前缀即服务提供者类上的RequestMapping注解上的路径 FeignClient(value server-member, path /member) public interface IMemberService {//该注解要与服务提供者的路径及请求方式保持一致请求方式是GetMapping、PostMapping还是其他否则映射不到GetMapping(/memberInfo)String getMemberInfo();PostMapping(/addMember)String addMember(memberVO member); } 在server-order下的OrderController新增接口/order/addMemberInfo以 访问server-member下的远程接口member/addMember RestController RequestMapping(/order) public class OrderController {//使用OpenFeign访问server-member服务的远程接口 /member/addMemberGetMapping(/addMemberInfo)public String addMember() {memberVO memberVO new memberVO();memberVO.setAge(18);memberVO.setName(张三);return iMemberService.addMember(memberVO);} } 重启server-order、server-member访问接口localhost:9071/order/addMemberInfo 由于member服务下的方法请求参数没有添加注解RequestBody所以后台打印出来参数值为null. 加上注解后重启server-member服务后再试一次访问刚刚的接口 可以看到已经接收到了请求传过来的参数了 4.2、使用注解RequestParamxxx接收一个普通参数String/Integer 4.2.1、在服务提供方和服务调用方提供同样的注解RequestParam(xxx) 修改server-member下的MemberController.class添加addMember方法 PostMapping(/addMember) public String addMember(RequestParam(test) Integer suqence,RequestBody memberVO memberVO) {System.out.println(memberVO.toString());System.out.println(suqence);return add member success; } 修改server-order下的IMemberService 接口配置feign客户端请求server-member下的远程接口member/addMember PostMapping(/addMember) String addMember(RequestParam(test) Integer id, RequestBody memberVO member); 4.2.2、服务提供方不添加RequestParam(xxx)注解服务调用方添加RequestParam(xxx)注解但是xxx要与服务提供方的参数一致才能映射 修改server-member下的MemberController.class添加addMember方法 PostMapping(/addMember) public String addMember(Integer suqence,RequestBody memberVO memberVO) {System.out.println(memberVO.toString());System.out.println(suqence);return add member success; } 修改server-order下的IMemberService 接口配置feign客户端请求 server-member下的远程接口member/addMember PostMapping(/addMember) String addMember(RequestParam(suqence) Integer id, RequestBody memberVO member); 修改OrderController的addMember方法测试参数接收 GetMapping(/addMemberInfo) public String addMember() {memberVO memberVO new memberVO();memberVO.setAge(18);memberVO.setName(张三);return iMemberService.addMember(12,memberVO); } 重启server-member、server-order服务重新访问接口localhost:9071/order/addMemberInfo 同一个方法中可以有多个RequestParam(xxx)注解但是只能有一个RequestBody注解。 4.3、使用PathVariable接收RESTFul请求路径上的参数 例如请求路径为/addMember/{id}/{name} 那么方法上的参数就可以写成addMemberInfo(PathVariable(id)Integer id,PathVariable(name)String name) 5、FeignClient优雅的使用方式 由于开发项目的时候在服务提供方和服务调用方有很多重复的代码如上面演示的VO对象在server-member和server-order服务下都有这样造成了代码冗余维护起来比较繁杂因此我们可以新增一个公共服务项目专门处理这些冗余的代码,然后由服务端实现接口客户端继承接口 5.1、在父目录springcloud下创建聚合项目springcloud-api作为公共模块 5.2、在springcloud-api项目的pom文件中引入依赖 dependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactIdscopeprovided/scope/dependency /dependencies 5.3、在springcloud-api项目里添加vo对象类和接口 memberVO.class public class memberVO {private Integer age;private String name;public Integer getAge() {return age;}public void setAge(Integer age) {this.age age;}public String getName() {return name;}public void setName(String name) {this.name name;}Overridepublic String toString() {return memberVO{ age age , name name \ };} } IMemberService.class public interface IMemberService {GetMapping(/memberInfo)String getMemberInfo();PostMapping(/addMember)String addMember(RequestParam(test) Integer id, RequestBody memberVO member); } 5.4、Maven install项目到maven本地仓库 5.5、在服务提供方server-member和服务调用方server-order引入公共服务模块 dependencygroupIdcom.chen/groupIdartifactIdspringcloud-api/artifactIdversion1.0-SNAPSHOT/version /dependency 5.6、server-member服务端(服务提供方)定义MemberController2 实现api项目中定义的接口 RestController public class MemberController2 implements IMemberService {Value(${server.port})private int port;Overridepublic String getMemberInfo() {return 当前请求端口为 port this is Member Info;}Overridepublic String addMember(Integer id, memberVO member) {System.out.println(member.toString());System.out.println(id);return add member success;} } 5.7、server-order客户端(服务调用方)定义接口继承api项目中定义的接口 目的为了写FeignClient注解并把访问路径补全 FeignClient(value server-member, path /member) public interface IMemberService2 extends IMemberService {}
http://www.tj-hxxt.cn/news/219130.html

相关文章:

  • 校园网站建设的作用百度网盘搜索免费资源
  • 建工教育网校官方网站网站策划公司
  • 做旅游网约车的网站网站二次开发是什么意思
  • 套别人代码做网站优化游戏的软件
  • 网站便民服务平台怎么做招聘 人才招聘
  • 小型网站制作深圳网络推广经验分享
  • 网站建设合同 下载专注网站建设怎么样
  • 游戏网站的设计方案如何制作免费永久网站
  • 南京网站建设网站设计 雷仁网络怎么做免费的网站推广
  • 网站开发技术支持贵州健康码app下载
  • 长春网站制作设计app音乐网站开发
  • 大学生网站开发比赛国家建设部网站首页
  • 房山企业网站建设公司网上做环评立项的网站是哪个
  • 没备案的网站收录自己做广告图片什么软件免费
  • 苏州瑞熙网站建设金华网站建设方案报价
  • 网站建设与运营培训班大数据培训心得
  • 品牌查询网站做网站时怎么裁切存图
  • 网站设计平台国外的电商网站
  • 网站大气是什么意思wordpress用支付宝转账插件
  • 杨小刀网站建设网络营销方案包括哪些主要内容
  • 开发一个个人网站手机主题制作软件
  • 网站实现功能免费的关键词优化工具
  • 十堰网站设计晋城市网站建设
  • 网站模板制作教程wordpress4.7.2写文章
  • 重庆网站建设优斗士想建个购物网站
  • 银行门户网站建设php企业门户网站
  • 灯饰如何做网站推广php能开发大型网站
  • 免费个人网站wordpress指定分类广告
  • 珠海网站建设方案维护外贸整合推广
  • 潍坊知名网站建设价格低市建设局网站的综合业务管理平台