微服务的定义:
将一个系统的不同模块分开进行管理,使用多个服务器来负载,降低了单个服务器的压力,并且便于管理
将单一项目拆分为多个小项目,也就是微服务的模块,每个模块尽可能的保证单一职责,服务之间可以相互调用
开始第一个微服务项目的创建
创建一个父工程,使用dependencyManagement标签管理子工程的依赖版本号
创建三个子工程:BookApplication、UserApplication、BorrowApplication
分别是书本工程、用户工程和借阅工程
在BookApplication和UserApplication中写好对应的根据id查找信息的请求、服务、持久层等代码
核心、在BorrowApplication中调用其他两个微服务的功能
在创建UserBorrowDetail的时候我们发现Book和User这两个类因为在其他子工程里面,调用不过来,因此我们需要把常用的这些类单独放在一个子工程里边,然后通过在其它工程的pom.xml文件中使用dependency来引入该工程获取到一些公共信息,如常用实体类
现在需要调用其他微服务的功能了
使用RestTemplate来实现:以下是远程调用UserApplication中/user/{uid}请求的实例:
RestTemplate restTemplate = new RestTemplate();
//使用getForObject来调用其他微服务的接口
User user = restTemplate.getForObject("http://localhost:8101/user/" + uid, User.class);
注意请求格式要写对,http://和最后的斜杠要加
也可以使用流的方式来遍历borrows:
bookList = borrows
.stream()
.map(b -> restTemplate.getForObject("http//:localhost:8201/book/"+b.getBid(),Book.class))
.collect(Collectors.toList());