依赖版本选择:
<properties>
<spring.cloud-version>2021.0.4</spring.cloud-version>
<spring.boot-version>2.7.8</spring.boot-version>
<spring.cloud.alibaba-version>2021.0.1.0</spring.cloud.alibaba-version>
</properties>
管理工程的依赖:
<!-- 管理子工程的依赖-->
<dependencyManagement>
<dependencies>
<!-- SpringBoot的依赖管理-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring.boot-version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- SpringCloud的依赖管理 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring.cloud-version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- 管理SpringCloudAlibaba的依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring.cloud.alibaba-version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
在这里插入代码片server:
port: 8081 #订单端口号
spring:
application:
name: order-service #配置服务名称
@RestController
@RequestMapping("/order")
public class OrderController {
@GetMapping("/add")
public String add(){
System.out.println("订单创建成功");
return "订单创建成功";
}
}
server:
port: 8091 #库存端口号
spring:
application:
name: order-service #配置服务名称
@RestController
@RequestMapping("/stock")
public class StockController {
@GetMapping("/reduce")
public String reduce(){
System.out.println("已减库存");
return "已减库存";
}
}
例:当我们创建订单时,需要向库存中也添加一条数据。此时就需要执行远程调用。
在微服之间实现远程调用需要使用到 RestTempate 对象。所以我们需要在订单微服中创建这个对象。因为我们的订单微服是属于消费端,则库存微服是属于提供端。
@Configuration
public class OrderConfig {
// 通过new创建
@Bean
public RestTemplate restTemplate(){
return new RestTemplate();
}
// 通过构建者对象创建
// @Bean
// @LoadBalanced
// public RestTemplate restTemplate(RestTemplateBuilder builder){
// RestTemplate restTemplate=builder.build();
// return restTemplate;
// }
}
通过save远程调用了stock-service微服的reduce方法
@RestController
@RequestMapping("/order")
public class OrderController {
@Autowired
private RestTemplate restTemplate;
@GetMapping("/add")
public String add(){
System.out.println("订单创建成功");
// 远程调用
String url="http://localhost:8091/stock/reduce";
/*
* 1.通过getForObject方法实现远程调用
* 2.这里用的是getForObject,是应为stock远程调用的是Get请求,如果是POst请求,则使用postForObject()方法
* */
String result = restTemplate.getForObject(url,String.class); //第一个参数是请求地址,第二个参数是返回数据封装类型
return "订单创建成功:"+result;
}
}