2.在父项目中新建一个product_service的spring boot子项目 商品服务:2021.0.3 org.springframework.cloud spring-cloud-dependencies${spring.cloud-version} pom import
entity层
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Product {
private Long id;
private String name;
private BigDecimal price;
}
controller层
@RestController
public class ProductController {
@GetMapping("/product/{id}")
public ResponseEntity getProductBuId(@PathVariable Long id){
//用于测试的数据
Product product = new Product(id, "蔚蓝香水", new BigDecimal("1200"));
return ResponseEntity.ok(product);
}
}
在resources包下的application.propertites文件中配置端口号
server.port=80813.在父项目中新建一个order_service的spring boot子项目 订单服务:
entity层
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Order {
private Long id;
private Long productId;
private Long count;
private LocalDateTime byTime;
private Product product;
}
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Product {
private Long id;
private String name;
private BigDecimal price;
}
config层
@Configuration
public class RestTemplateConfig {
@Bean
public RestTemplate restTemplate(){
return new RestTemplate();
}
}
service层
@Service
public class OrderService {
@Autowired
private RestTemplate restTemplate;
public Order getOrderById(Long id){
Order order = new Order(id,16L,10L, LocalDateTime.now(),null);
//调用商品服务来查询商品
ResponseEntity entity = restTemplate.getForEntity("http://localhost:8081/product/" + order.getProductId(),Product.class);
order.setProduct(entity.getBody());
return order;
}
}
controller层
@RestController
public class OrderController {
@Autowired
private OrderService orderService;
@GetMapping("/order/{id}")
public ResponseEntity getOrderById(@PathVariable Long id){
return ResponseEntity.ok(orderService.getOrderById(id));
}
}
4.同时运行商品服务和订单服务,打开浏览器,输入访问路径:http://localhost:8080/order/1,得到以下运行结果
根据以上操作,你就可以运行一个简单的微服务Demo了。
微服务:微服务就是按照业务划分成一个个小项目,每个项目单独打包部署到自己的服务器,只关心调用并返回相应结果,不考虑这个服务是什么。使用微服务的好处:1.将复杂的服务拆分成单一功能的服务,利于分工,定位问题也方便。
2.服务与服务之间完全独立,每个服务的修改和部署对其他服务没有影响。
3.系统的并发量、可用性以及性能有了提高。



