1

我想知道在解析控制器类时是否可以让 Spring MVC 像 Stripes 一样工作。

通常我可以用 a 注释控制器,@RequestMapping以便将其映射到其 URL。

然而,我的老板要求从 Stripes 派生出一种约定优于配置的机制,我们在工作多年后逐渐放弃了这种机制。

您会看到,Actions在包含stripes.action其名称的包下的类路径中扫描条带。每个子包都是一个虚拟目录,最终一个名为的类SomethingAction将映射到 url Something.action

我需要做的如下:

com.example.product.web.controllers.secure.admin.UserController映射/secure/admin/user com.example.something.different.from.before.web.controllers.pub.WelcomeController mapping/pub/welcome

基本上我想让 Spring MVC 根据它们的完整类名自动映射控制器,而不是@RequestMapping在每个控制器上使用。

重要的!如果 Spring MVC 已经有一个命名约定,我并不完全需要那个命名约定 ( )。web.controllers我只需要一个。

到目前为止,我还没有发现任何线索。谢谢

4

1 回答 1

1

ControllerClassNameHandlerMapping开箱即用地完成了您所期待的工作。

只需将基础包设置为com.example.product.web.controllers,子包就会映射为您的路径。引用 API 文档

指定一个基本包,如“com.mycompany.myapp”,以在该基本包中包含子包作为路径元素,例如为类名“com.mycompany.myapp.mymodule.BuyForm”生成路径“/mymodule/buyform”。

子包层次结构表示为单独的路径元素,例如类名“com.mycompany.myapp.mymodule.mysubmodule.BuyForm”的“/mymodule/mysubmodule/buyform”。

请注意,它被限制为只有一个基本包。如果要扫描不同的包层次结构,ControllerClassNameHandlerMapping则必须相应地自定义其行为。

于 2015-08-21T10:28:55.083 回答