多语言展示
当前在线:1172今日阅读:84今日分享:32

如何使用Spring MVC创建易于测试的web控制器?

如何使用Spring MVC创建易于测试的web控制器?
工具/原料
1

springmvc

2

IntelliJ IDEA

方法/步骤
1

Spring中的控制器是轻量级的、普通的旧式Java对象。由于依赖关系很少,它们被设计为易于测试的,并且框架为它们的行为提供了许多选项,以适应您的工作方式。

2

下图是MVC框架中Spring控制器的简单示例。

3

实体类如下:

4

该控制器为特定的团队提供对两个url的GET访问,/results/recent和/results/recent /

5

在研究这个控制器如何与servlet引擎集成的机制之前,应该清楚这个类很容易作为单元测试进行测试。下图显示了getMostRecentResultsForTeam方法的测试。

6

上例类是用@Controller注释的,所以servlet应用程序上下文中的component-scan指令接收它。

7

这个控制器对于以/results开头的任何URL都是特定的,因此也可以在类级别使用@RequestMapping注释进行注释。任何方法级别的@RequestMapping注释都将与此相关。

8

给定值team, getMostRecentResultsForTeam方法有一个用@PathVariable注释的参数。这个值对应于@RequestMapping注释中的{team}绑定。如果您愿意,这允许使用RESTful方法;参数化请求url非常简单。这也是类型安全的;Spring可以将该值解释为任何简单类型,比如基本类型字符串和日期,并且您可以提供自己从请求路径中的字符串到自己的复杂类型的转换。

9

控制器上的方法具有单一的作用,为视图技术提供模型到渲染。

10

这两个方法具有相似的签名。它们都至少接受模型对象的一个参数,并且都返回字符串。

11

模型参数由框架传递给控制器方法。模型对象的核心是字符串到对象的映射。控制器执行必要的工作,例如从访问数据库或第三方web应用程序的服务中检索数据,并填充给定的模型。请记住,Java对象是引用,所以框架在您更新模型实例之后仍然可以引用它,这意味着您不需要从方法。

12

这允许方法返回另一个必需的组件,即要呈现的视图的名称。您可以配置Spring的MVC框架,以便它理解如何将字符串映射到特定视图;展望下一个问题,看看它是如何工作的。

13

为了允许尽可能多的灵活性,并符合您自己对如何定义自己的控制器的偏好,Spring MVC框架可以为您的方法定义理解许多不同的配置。您可以在方法参数上指定几个注释,例如@RequestPart(用于多部分表单上传)或@RequestHeader(用于为变量分配特定头部)。

推荐信息