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 ResponseEntitygetProductBuId(@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); //调用商品服务来查询商品 ResponseEntity4.同时运行商品服务和订单服务,打开浏览器,输入访问路径:http://localhost:8080/order/1,得到以下运行结果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)); } }
根据以上操作,你就可以运行一个简单的微服务Demo了。
微服务:微服务就是按照业务划分成一个个小项目,每个项目单独打包部署到自己的服务器,只关心调用并返回相应结果,不考虑这个服务是什么。使用微服务的好处:1.将复杂的服务拆分成单一功能的服务,利于分工,定位问题也方便。
2.服务与服务之间完全独立,每个服务的修改和部署对其他服务没有影响。
3.系统的并发量、可用性以及性能有了提高。