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

网站设计论文的题目找人做一个网站需要花多少钱

网站设计论文的题目,找人做一个网站需要花多少钱,个人业务网站源码php,怎样做网站seo目录 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、使用注解@RequestParam("xxx")接收一个普通参数(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客户端的依赖

<dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-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/memberInfo@GetMapping("/getMember")public String getMember() {return iMemberService.getMemberInfo();}//使用OpenFeign访问server-pay服务的远程接口 /payInfo@GetMapping("/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(chain=true)开启链式编程

设置参数时可以简写为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/addMember@GetMapping("/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、使用注解@RequestParam("xxx")接收一个普通参数(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);

修改OrderControlleraddMember方法测试参数接收

@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文件中引入依赖

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><scope>provided</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引入公共服务模块

<dependency><groupId>com.chen</groupId><artifactId>springcloud-api</artifactId><version>1.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.yayakq.cn/news/979718/

相关文章:

  • 网站有利于seo的细节东莞网页制作设计
  • 北京网站建站系统平台网站源码大全
  • 权威的网站建设漂亮又简单的logo图片
  • 旅游景点网站策划书wordpress qq音乐插件怎么用
  • 自己做的网站容易被黑吗做网站一天赚多少钱
  • 金华企业网站建站模板专业做房地产网站建设
  • 互助平台网站建设费用网页设计与制作心得体会1000
  • php免费网站空间杨浦区公司网站建设
  • 现在一般做网站都是去哪家做的asp 网站信箱模板
  • 科技设计网站做外贸网站的好处
  • 漫画做视频在线观看网站旅游景点网站设计
  • 想学做网站学什么教程网站怎样恶意刷
  • 公司建站网站wordpress 单页面模板
  • 徐州高端模板建站3d效果图制作教程
  • 建立网站可以赚钱吗?苏州市建设工程质量监督站网站
  • 腾讯云网站备案如何免费制作和开发自己的小程序
  • 高端网站建设浩森宇特哪个网站可以做专业兼职
  • 东莞seo建站推广费用做的网站不能放视频播放器
  • 如何做简易的网站上传到ftp网站模板
  • 开原网站开发办公室
  • 唐县住房和城乡建设局网站修改WordPress文章修改样式
  • 医院工程建设网站企业营销型展厅优势
  • 有经验的大连网站建设网站建设长尾关键词
  • 做隐私的网站外贸网站推广多少费用
  • pc站和手机网站微网站开发需要几个人
  • 做民宿推广都有哪些网站建设模板网站
  • wordpress插件 ftp页面seo是什么意思
  • 国内org域名的网站入返晋人员登记网页怎么制作
  • 移动建站公司网站信息员队伍建设方案
  • 汽车租赁网站建设天津重型网站建设方案公司