try*_*arn 2 java rest polymorphism spring spring-mvc
我签出了讨论在接口中使用的SO PostRequestMapping。尽管该帖子包含实现此目的的方法,但并未提及执行此操作的利弊。
在体系结构方面,使用控制器作为接口是一个坏主意吗?就控制器的多态性而言,我们将获得什么好处?
放置@RequestMapping接口没有错。但是,请确保您有正确的理由这样做。多态性可能不是一个很好的理由,您将不会在运行时或类似的情况下交换不同的具体实现。
另一方面,例如,Swagger代码生成器生成带有@RequestMapping方法,字段和返回类型(以及@Api定义等)以及所有注释的接口。然后,您的控制器将实现此接口。在这种情况下,这很有意义,因为它只是在强制您遵守Yaml中最初定义的Swagger / OpenAPI接口定义。有一个很好的副作用,它可以使您的控制器更加整洁。(客户端也可以使用相同的Yaml为自己的语言框架生成自己的客户端存根)。
如果您选择执行此操作,请确保使用最新版本的Spring Framework,因为有些错误仅在最近才得到修复,而并非所有注解都得到了继承。 https://github.com/spring-projects/spring-framework/issues/15682
如果您使用的是较早的Spring版本,则可能需要在控制器中重复相同的注释。
因此,这有意义的真正原因是强制执行接口协定,并将接口定义(以及与该接口有关的所有信息)与实际的具体实现分开。
| 归档时间: |
|
| 查看次数: |
102 次 |
| 最近记录: |