Java 在spring中使用多个服务/控制器

Java 在spring中使用多个服务/控制器,java,spring,rest,spring-mvc,Java,Spring,Rest,Spring Mvc,我正在java中使用spring,并试图为我的程序创建一个RESTAPI。我有3个实体要管理,所以我还有3个DAO类。 我的问题是我有两种类型的用户(玩家和管理员)。他们每个人都可以对每个实体/表执行不同的操作。 我的问题是,实现这些要求的最佳方式是什么。 我应该为(我的每个实体/表)创建3个服务和3个控制器,还是应该创建2个服务和2个控制器(每种类型的用户一个),或者可能有比我建议的更好的方法 编辑: 另一件可能很重要的事情是,我需要验证服务中的数据,验证过程检查表中的连接,因此在每个服务中,

我正在java中使用spring,并试图为我的程序创建一个RESTAPI。我有3个实体要管理,所以我还有3个DAO类。 我的问题是我有两种类型的用户(玩家和管理员)。他们每个人都可以对每个实体/表执行不同的操作。 我的问题是,实现这些要求的最佳方式是什么。 我应该为(我的每个实体/表)创建3个服务和3个控制器,还是应该创建2个服务和2个控制器(每种类型的用户一个),或者可能有比我建议的更好的方法

编辑:
另一件可能很重要的事情是,我需要验证服务中的数据,验证过程检查表中的连接,因此在每个服务中,我还需要为不同的实体提供Dao对象(例如,检查一个新操作是否有一个发生该操作的元素。

您可以使用Spring security研究方法级安全性。Baeldung对该主题有很好的理解。 基本上是对某些控制器方法进行注释,然后拒绝不满足注释条件的用户访问这些方法。
例如,Thymeleaf还提供了与Spring Security的集成,因此当用户没有特定权限时,您可以使HTML中的按钮不可用。听起来您可能会为不同类型的用户提供不同的功能。这是一种管理员可以做玩家不能做的事情的观点。因此我们将采用单独的特定于管理员的服务方法,玩家使用的控制器不需要连接管理员服务

此外,交易的性质通常不是特定于一个实体的,通常在同一个交易中有不同的实体需要处理。如果是这样,那么为每个实体提供不同的服务可能没有意义

在控制器级别上,使用Spring安全性来强制谁可以调用什么端点。我会根据共享的足够多的公共内容将控制器端点组织成类,但如何将其分解并不是什么大问题

对于服务,我会有一个用于普通玩家的服务实现逻辑和一个用于实现管理员功能的服务。如果其中任何一个都有很多代码,那么我会考虑将其分解为单独的服务,保持包含普通玩家和管理员方法的服务之间的区别。

r兴高采烈:也许,您可以使用Spring Security!这将使您能够根据需求利用与任何特定角色相关联的授权原则。您可能希望查看以下内容: