在春季与多个服务/控制器一起工作

时间:2019-04-18 17:25:21

标签: java spring rest spring-mvc

我正在使用Spring在Java中工作,并且正在尝试为我的程序创建rest-API。我要管理3个实体,所以我也有3个DAO类。 我的问题是我有2种类型的用户(玩家和管理员)。他们每个人都可以对每个实体/表执行不同的操作。 我的问题是实现这些要求的最佳方法是什么。 应该为我提供3个服务和3个控制器(对于每个实体/表一个)还是为我创建2个服务和2个控制器(对于每种类型的用户一个)?或者也许有比我建议的更好的方法? >

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

2 个答案:

答案 0 :(得分:1)

您可以使用Spring Security研究方法级别的安全性。 Baeldung在该主题上有一个不错的guide。 您基本上可以对某些控制器方法进行注释,然后对不满足注​​释条件的用户拒绝对其的访问。 例如Thymeleaf也提供与Spring Security的集成,因此当用户没有特定权限时,您可以在HTML中使按钮不可用

答案 1 :(得分:1)

听起来您可能会为不同类型的用户提供不同的功能。管理员可以做玩家不能做的事情。因此,将有单独的特定于管理员的服务方法,玩家所使用的控制器不需要将管理员服务连接到其中。

这也是交易的本质,它们通常不特定于某个实体,通常您要在同一笔交易中处理不同的实体。如果是这样,那么为每个实体提供不同的服务可能就没有意义了。

在控制器级别,使用Spring Security强制谁可以调用什么终结点。我会根据共享足够多的东西将控制器端点组织成类,但是如何分解它并不是一件大事。

对于服务,我将为普通玩家提供一种服务实现逻辑,以及一种实现管理员功能的服务。如果这两个代码都有很多代码,那么我会考虑将其分解为单独的服务,以区分包含普通播放器方法和管理员方法的服务。