Spring MVC请求映射,这可以是动态/可配置的吗?

loy*_*low 14 java spring spring-mvc

使用Spring MVC,我知道如何设置RequestMapping每个控制器和方法/操作.

但是,如果我希望这是可配置的,那么例如我以下控制器:

BlogController 
 - with methods for listing blogs entries, single entry, new, update, etc.
ArticleController
 - with methods for listing articles entries, single entry, new, update, etc.
Run Code Online (Sandbox Code Playgroud)

现在,在我的应用程序中,管理员可以为网站设置2个博客,以及1个文章部分,以便网址如下:

www.example.com/article_section1/ - uses ArticleController
www.example.com/blog1/ - uses BlogController
www.example.com/blog2/ - uses BlogController
Run Code Online (Sandbox Code Playgroud)

也许一段时间后,管理员想要另一篇文章部分,所以他们只需要配置一个新的部分,如:

www.example.com/article_section2/
Run Code Online (Sandbox Code Playgroud)

这必须动态/即时工作,而不必重新启动应用程序.

我的问题只关心我将如何处理控制器的url映射.

如何使用Spring MVC实现这一目标?

我只知道如何使用@RequestMapping("/helloWorld")控制器或方法级别将URL映射到控制器,但这会使url映射固定,而不是像我想要的那样可配置.

更新:

我将存储数据库中的路径,并将映射到控制器类型,如下所示:

path                  controller
/article_section1/    article
/blog1/               blog
/blog2/               blog
..
Run Code Online (Sandbox Code Playgroud)

有了上述信息,我怎样才能将请求发送到正确的控制器?

再次,不想重新加载/重新部署,我意识到这将需要更多的工作,但它在规范:)

小智 5

这种URL映射是否适合您?

www.example.com/blog/1/
www.example.com/blog/2/
Run Code Online (Sandbox Code Playgroud)

如果是,那么这很容易:Spring 3支持路径变量:http://static.springsource.org/spring/docs/3.0.x/reference/mvc.html#mvc-ann-requestmapping-advanced

或者,您可以创建一个通用请求映射和您自己的子调度程序来读取配置文件,但我认为这可能比它的价值更多.

  • 我想要完全控制url,我知道路径变量谢谢.实际上我将从数据库中读取路径,然后以某种方式将请求转发给正确的控制器,但不知道如何. (3认同)