目录设计:
1、首先基于业务分包
早年的Java分包方式通常是基于技术的,比如与domain包平级的有controller包、service包和infrastructure包等。这种方式当前并不被行业所推崇,而是应该首先基于业务分包。比如,在订单示例项目中,有两个重要的领域对象Order
和Product
(在DDD中称为聚合 根),所有的业务都围绕它们展开,因此分别创建order包和product包,再分别在包下创建与之相关的各个子包。此时的order包如下:
├── order │ ├── OrderApplicationService.java │ ├── OrderController.java │ ├── OrderNotFoundException.java │ ├── OrderRepository.java │ ├── OrderService.java │ └── model │ ├── Order.java │ ├── OrderFactory.java │ ├── OrderId.java │ ├── OrderItem.java │ └── OrderStatus.java
当然,基于业务分包并不意味着所有的代码都必须囿于业务包下,这里的逻辑是:优先进行业务分包,
2、对于一些不隶属于任何业务的代码可以单独分包,比如一些util类、公共配置等。比如我们依然可以创建一个common包,下面放置了Spring公共配置、异常处理框架和日志等子包:
└── common ├── configuration ├── exception ├── loggin └── utils