web-dev-qa-db-ja.com

Spring:プロパティファイルで@RequestMapping値を定義する

プロパティファイルで定義することにより、Springで@RequestMappingアノテーションの値を定義することは可能ですか?

実際、私は次のようなことをしています:

@Controller
@RequestMapping("/xxx")
public class MyController {
...
}

しかし、パス/xxxをプロパティファイルに保存したいと思います。どうして?たとえば、コントローラのパスの名前を変更すると、テンプレートで問題が発生する可能性が低くなります。

他のフレームワークではこれが許可されています(例えばSymfonyを参照)。

17
JeanValjean

たとえば@RequestMapping("${foo.bar}")のように、@RequestMappingでプレースホルダーを使用できるようにする必要があります。詳細は documentation をご覧ください。

@RequestMappingアノテーションのパターンは、ローカルプロパティやシステムプロパティ、環境変数に対して${…​}プレースホルダーをサポートします。これは、コントローラーがマップされているパスを構成によってカスタマイズする必要がある場合に役立ちます。プレースホルダーの詳細については、PropertyPlaceholderConfigurerクラスのjavadocsを参照してください。

27

助けていただきありがとうございます。それは私の貢献です... mavenがすべてを単独で行うため、依存関係は必要ありません。

プロパティファイルで、以下のようなmaven補間を使用します。

vs= v1

us= users
me= messages

url.user=${vs}/${us}
url.mess=${vs}/${me}

あなたの運命のファイル、例えば(mycaseの)コントローラ/リソース:

@RestController
//@RequestMapping("v1/users") <<<<<<instead this
@RequestMapping("${url.user}")<<<<<<use this
@Api(value = "API RESTFUL)
public class UserResource {
//
1
Paulo