当我们在spring框架中使用Controllers为客户端或前端提供休息服务时,例如以JSON格式,我们主要将我们的Java逻辑分为两层:控制器和服务。但我现在发现,控制器几乎完全没有实现,只是委托给服务层。
经过一些经验后,我开始认为控制器被认为是MVC spring框架中的一个层,当你使用它们来提供简单的REST服务而不构建表示层时你可以使用它们作为纯服务层。更多 - 如果您删除所有弹簧注释,如@ Component,@ RequestBody等,这些类将成为纯服务,并且不需要在控制器和服务之间保持分离。即使您谈论它们,您通常也会这样说:我们向客户提供REST服务“
我有什么大不了的东西吗?
但请记住现实世界,不要说:
“如果外星人下到地球,代码可能会刹车。”
你是对的控制器是Spring MVC架构中的额外层,但重要的是使你的代码易于管理。控制器的唯一目的是映射您的HTTP请求,获取请求数据和调用服务以处理这些数据并提供响应数据。
另一方面,服务层是MVC架构中可重用的层类型。服务由可在需要时重用的方法组成,如果您不使用服务并在控制器中执行业务逻辑,则管理起来更复杂,并且不会是可读代码。
此外,像@Service
,@Repository
和@Controller
这样的注释只是为了识别你也可以使用@Component
注释而不是这些。但正确的注释将使代码更具可读性,并且可以理解它的目的。希望我回答你的问题。