微服务-服务拆分

文章目录

服务拆分及注意事项

每个服务有独立的数据库,订单模块需要查询用户信息时,通过调用用户模块的接口,自身的数据库并没有用户信息。

服务拆分案例

案例结构

案例有2个微服务,order-service微服务对应的表为cloud-order,user-service微服务对应的表为cloud-user。在实际生产部署时,这两个表会被放在不同的数据库中,没有办法做关联查询。

需求:根据订单id查询订单的同时,把订单所属的用户信息一起返回

案例代码分析

  1. 配置类
java 复制代码
/**
 * @SpringBootConfiguration继承自@Configuration,
 * 二者功能也一致,标注当前类是配置类,并会将当前类内声明的一个或多个以@Bean注解标记的方法的实例纳入到spring容器中
 */
@SpringBootConfiguration
public class WebConfiguration {

    @Bean //相当于@Controller,@Service等
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }
}
  1. OrderService类
java 复制代码
@Service
public class OrderService {

    @Autowired
    private OrderMapper orderMapper;

    // 获取restTemplate对象
    @Autowired
    private RestTemplate restTemplate;

    public Order queryOrderById(Long orderId) {
        // 1.查询订单
        Order order = orderMapper.findById(orderId);
        // 2.定义url
        String url = "http://localhost:8081/user/"+order.getUserId();
        // 3.发送http请求
        User user = restTemplate.getForObject(url, User.class);
        // 4.封装user
        order.setUser(user);
        // 5.返回
        return order;
    }
}
  1. 测试
相关推荐
日月云棠2 小时前
各版本JDK对比:JDK 25 特性详解
java
用户8307196840823 小时前
Spring Boot 项目中日期处理的最佳实践
java·spring boot
JavaGuide3 小时前
Claude Opus 4.6 真的用不起了!我换成了国产 M2.5,实测真香!!
java·spring·ai·claude code
IT探险家4 小时前
Java 基本数据类型:8 种原始类型 + 数组 + 6 个新手必踩的坑
java
花花无缺4 小时前
搞懂new 关键字(构造函数)和 .builder() 模式(建造者模式)创建对象
java
用户908324602734 小时前
Spring Boot + MyBatis-Plus 多租户实战:从数据隔离到权限控制的完整方案
java·后端
桦说编程4 小时前
实战分析 ConcurrentHashMap.computeIfAbsent 的锁冲突问题
java·后端·性能优化
程序员清风8 小时前
用了三年AI,我总结出高效使用AI的3个习惯!
java·后端·面试
beata9 小时前
Java基础-13: Java反射机制详解:原理、使用与实战示例
java·后端
用户0332126663679 小时前
Java 使用 Spire.Presentation 在 PowerPoint 中添加或删除表格行与列
java