我希望对我的@Configuration 文件使用“按功能打包”。 目前,我正在使用“逐层封装”。 需要明确的是,这不是一个基于意见的类型问题,即“按功能打包”和“按层打包”哪个更好,而是一个如何正确迁移的问题。
分层封装:
├── com.app
└── configuration
├── KafkaProducerConfiguration
├── MongoRepositoryConfiguration
└── RestClientConfiguration
└── controller
├── CompanyController
├── ProductController
└── UserController
└── model
├── Company
├── Product
└── User
└── repository
├── CompanyRepository
├── ProductRepository
└── UserRepository
└── service
├── CompanyService
├── ProductService
└── UserService
公司服务需要kafka生产者向公司的其他部分发送消息。 其余客户端是用户服务和产品服务需要查询一些外部信息。 需要 mongo 存储库来配置存储库层中的所有三个类。
遵循本指南:https://medium.com/sahibinden-technology/package-by-layer-vs-package-by-feature-7e89cde2ae3a
我正在重构:
├── com.app
└── configuration
├── KafkaProducerConfiguration
├── MongoRepositoryConfiguration
└── RestClientConfiguration
└── company
├── Company
├── CompanyController
├── CompanyRepository
└── CompanyService
└── product
├── Product
├── ProductController
├── ProductRepository
└── ProductService
└── user
├── User
├── UserController
├── UserRepository
└── UserService
不幸的是,我在重构配置层时遇到了困难,我想避免按功能包+按层包的混合包。
如何将这个配置层重构为“按功能打包”?
在我看来这是一个如何组织包结构的问题,一般有两个方向,一是按业务逻辑划分,通过关键的业务逻辑概念来完成包结构组织,二是按领域划分,使用DDD(Domain-驱动设计)来划分域并围绕域来组织包结构。但这两个都是主观的,没有标准答案