Web アプリケーションのルーティングと URL を定義するために yaml、xml、またはプロパティ ファイルなどの 1 つのファイルの 1 つの場所で Web アプリケーションのルーティングを行い、URL を個々のメソッドまたは関数と接続することは良い考えのように思えます。フレームワーク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 には、すべてのルーティングを 1 か所に集める良い方法がありません。いくつかは xml ファイルにあり、いくつかは注釈として (ハンドラーのメソッド宣言のすぐ上に書き込まれます)、いくつかは urlrewrite などのプラグインでオーバーライドできます。
Spring webapp のルーティングを 1 か所に集められないのはなぜですか? それはより良いデザインとより高い結束ではないでしょうか? また、1 つの Web アプリケーションに対して複数の Web コンテキストを使用できないことが問題になる場合もあります。サーブレットの仕様では、webapp に対して複数の webcontext を許可しておらず、それは全単射である必要があるようです。なんで?