可以更轻松地在Spring框架中路由URL吗?

时间:2014-10-11 19:48:43

标签: java spring-mvc annotations tuckey-urlrewrite-filter cohesion

在一个文件中将webapp路由到一个位置,例如yaml,xml或属性文件来定义webapp的路由和URL,并将url与各个方法或函数连接似乎是一个好主意。为什么Spring不这样做?框架webapp2就是这样,易于处理。具有正则表达式的URL路由方案看起来像是在yaml中定义的良好可读性

handlers:
- url: /(amazonas.*|acre.*|alagoas.*|roraima-*|mato_grosso_do_sul*|pernambuco.*|bahia.*|rio_grande_do_sul.*|sao_paulo.*|goias.*|paraiba.*|piaui.*|ceara.*|amapa.*|tocantins.*|rondonia.*|sergipe.*|para.*|maranhao.*|rio_de_janeiro.*|rio_grande_do_norte.*|distrito_federal.*|espirito_santo.*|minas_gerais.*|parana.*|santa_catarina.*|rio_grande_do_sul.*)
  script: br.app

- url: /obrigado.txt
  static_files: static/obrigado.txt
  upload: static/obrigado.txt
  secure: optional
  expiration: "24h"

- url: /ai/cat_tmpl/0
  script: montao.app

Struts也就像使用xml进行路由一样。然而,Spring并没有很好的方法在一个地方收集你的所有路由。在xml文件中有一些,有些是注释(直接写在处理程序中的方法声明之上),有些可以用urlrewrite等插件覆盖。

为什么无法在Spring webapp的一个地方收集路由?那不是更好的设计和更高的凝聚力吗?有时候你也不能拥有一个webapp的webcontext。似乎servlet规范不允许为webapp提供多个webcontext,并且它必须是双射。为什么呢?

1 个答案:

答案 0 :(得分:3)

Spring MVC非常灵活,可以插入另一个路由基础设施。 你应该看一下springmvc-router

从Spring 4.1开始提供反向路由(请参阅SPR-5579) - 但如果您希望看到类似这样的内容,仍然可以投票 SPR-5757在框架中。