我正在开发一个Spring Boot应用程序,我面临以下情况:
我有x和y实体,但是这些实体的字段完全相同,因此它们都使用相同的DTO(唯一的区别是它们有不同的名称并且都有自己的数据库表)。这种情况导致我目前有两个相同的控制器。
出于商业原因,它们必须是两个独立的实体,即使它们是相同的字段。
这种情况下正确的程序是什么?
即使是代码重复,我是否保留两个控制器,以便一个控制器只能负责一个实体?
或者我可以以某种方式做到这一点,以便我可以为两个实体使用一个控制器,并具有动态路径,并且通过突出显示路径中的实体类型,我可以区分它使用的服务实现(因为服务接口是相同的,两种实现在一些细节上有所不同,一种是表 x,另一种是表 y)?
如果它们是两个独立的业务实体,那么最好有两个独立的控制器。例如,第一个可能有一个请求映射 /customers,第二个可能是 /companies。鉴于两个实体共享公共字段,您可以创建一些通用 DTO 类。
此外,您可以使用一种控制器方法并为实体类型声明一个路径变量(/api/{entityType},例如,如果您正在与客户打交道,则实体类型的值将是“customers”等) 。收到请求后,您将检查实体的类型并委托给适当的服务类,该服务类封装与被调用实体相关的业务逻辑。