4.8应用服务层

分类: DDD领域驱动设计实战

应用服务层

应用服务层是应用层的核心,负责协调领域对象完成用例。合理设计应用服务层是 DDD 架构的重要部分。本节将学习如何实现应用服务层。

本节将学习:应用服务职责、事务管理、协调领域对象,以及用例实现。

应用服务职责

职责定义

应用服务的职责:

  • 协调领域对象
  • 管理事务
  • 实现用例
  • 不包含业务逻辑

事务管理

事务注解

@Service @Transactional(rollbackFor = Exception.class) public class OrderApplicationService { @Autowired private OrderRepository orderRepository; @Autowired private ProductRepository productRepository; public Order createOrder(OrderCreateDTO dto) { // 协调领域对象完成订单创建 // 事务由 @Transactional 管理 } }

协调领域对象

协调示例

@Service @Transactional(rollbackFor = Exception.class) public class OrderApplicationService { public Order createOrder(OrderCreateDTO dto) { // 1. 创建订单聚合 Order order = new Order(); order.setUserId(dto.getUserId()); // 2. 添加订单项 for (OrderItemDTO itemDTO : dto.getItems()) { Product product = productRepository.findById(itemDTO.getProductId()) .orElseThrow(() -> new ProductNotFoundException()); OrderItem item = new OrderItem(product, itemDTO.getQuantity()); order.addItem(item); } // 3. 计算总金额 order.calculateTotal(); // 4. 保存订单 orderRepository.save(order); return order; } }

用例实现

用例流程

官方资源

本节小结

在本节中,我们学习了:

第一个是应用服务职责。 协调领域对象,管理事务。

第二个是事务管理。 使用 @Transactional 管理事务。

第三个是协调领域对象。 协调多个领域对象完成用例。

第四个是用例实现。 实现业务用例流程。

这就是应用服务层。应用服务层是连接用户界面层和领域层的桥梁。

在下一节,我们将学习领域事件。