7

アプリケーションのソースを調べたところ、設定のキーと値を表示する一般的な Spring MVC コントローラーが数回コピー アンド ペーストされていることがわかりました。クラス定義は、RequestMapping 値を除いてまったく同じです。これは、各アプリケーションがこのページを異なる URL で使用できるようにする必要があるためです。

このコントローラーを共通ライブラリーに移動し、デフォルトの RequestMapping 値を提供したいと考えています。

@Controller 
@RequestMapping (value="/property")
public class CommonPropertyController {
   ....
}

独自の URL パターンを使用する場合、各アプリケーションはこの値をどのようにオーバーライドしますか?

4

1 に答える 1

12

ソース コードを見て、手動 (アノテーション前) のハンドラー定義に戻らずにそれを行う方法を思いつきました (これは、必要なものを実装する方法でもあります)。

Spring では、@RequestMapping値でプロパティ プレースホルダー コンフィギュアラーを使用できます。したがって、その事実を使用して@RequestMapping次のように定義することができます。

@Controller
@RequestMapping("${routing.property.path}")
public class CommonPropertyController {
    ....
}

PropertySourcesPlaceholderConfigurer次に、アプリケーション コンテキストで適切なプロパティを定義するだけで、準備完了です。


更新プロパティが指定されていない場合にフォールバック マッピングが必要な場合は、プロパティ プレースホルダーを使用してデフォルト値を指定することもできます。

@RequestMapping("${routing.property.path:/property}")
于 2013-06-15T22:40:27.480 に答える