在一个文件中将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,并且它必须是双射。为什么呢?
答案 0 :(得分:3)
Spring MVC非常灵活,可以插入另一个路由基础设施。 你应该看一下springmvc-router。
从Spring 4.1开始提供反向路由(请参阅SPR-5579) - 但如果您希望看到类似这样的内容,仍然可以投票 SPR-5757在框架中。