1

在一个文件(例如 yaml、xml 或属性文件)中将 webapp 路由到一个位置,以定义 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,并且它必须是双射。为什么?

4

1 回答 1

3

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

从 Spring 4.1 开始可以使用反向路由(请参阅SPR-5579) - 但如果您想在框架中看到类似的内容,您仍然可以投票支持SPR-5757 。

于 2014-10-12T12:27:52.470 回答