Spring Cloud Alibaba是什么?
2022年都快过完了,我相信大家肯定不用我说Spring Cloud Alibaba是什么了!
近期阿里最新开源了一份,Spring Cloud Alibaba(全解第7版),我大概看了一下,更新的内容非常多,很细节的地方写的也很到位!而且是咱们国内开发出来的框架,堪称国产之光!
下面咱们就跟着文章来看看都更新了那些内容吧!
目录展示
部分内容展示
自定义实现负载均衡
全局过滤器
顺序消息
事务消息
下单之后发送短信
TCC事务
需要领取这份资料的朋友麻烦关注一下公众号:Java收藏夹
一点点原文展示
3.3.2 将商品微服务注册到nacos
接下来开始修改 shop-product 模块的代码, 将其注册到nacos服务上
1 在pom.xml中添加nacos的依赖
<!--nacos客户端-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
2 在主类上添加@EnableDiscoveryClient注解
@SpringBootApplication
@EnableDiscoveryClient
public class ProductApplication
3 在application.yml中添加nacos服务的地址
spring:
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
4
启动服务, 观察
nacos
的控制面板中是否有注册上来的商品微服务
3.3.3 将订单微服务注册到nacos
接下来开始修改 shop_order 模块的代码, 将其注册到nacos服务上
1 在pom.xml中添加nacos的依赖
<!--nacos客户端-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
2 在主类上添加@EnableDiscoveryClient
注解
@SpringBootApplication
@EnableDiscoveryClient
public class OrderApplication
3
在
application.yml
中添加
nacos
服务的地址
spring:
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
4
修改
OrderController
, 实现微服务调用
@RestController
@Slf4j
public class OrderController {
@Autowired
private RestTemplate restTemplate;
@Autowired
private OrderService orderService;
@Autowired
private DiscoveryClient discoveryClient;
//准备买1件商品
@GetMapping("/order/prod/{pid}")
public Order order(@PathVariable("pid") Integer pid) {
log.info(">>客户下单,这时候要调用商品微服务查询商品信息");
//从nacos中获取服务地址
ServiceInstance serviceInstance =
discoveryClient.getInstances("service-product").get(0);
String url = serviceInstance.getHost() + ":" +
serviceInstance.getPort();
log.info(">>从nacos中获取到的微服务地址为:" + url);
//通过restTemplate调用商品微服务
Product product = restTemplate.getForObject(
"http://" + url + "/product/" + pid, Product.class);
log.info(">>商品信息,查询结果:" + JSON.toJSONString(product));
Order order = new Order();
order.setUid(1);
order.setUsername("测试用户");
order.setPid(product.getPid());