web-dev-qa-db-fra.com

Spring: définir la valeur @RequestMapping dans un fichier de propriétés

Est-il possible de définir la valeur d'un @RequestMapping annotation dans Spring en la définissant dans un fichier de propriétés?

En fait, je fais quelque chose comme:

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

Mais je voudrais enregistrer le chemin /xxx dans un fichier de propriétés. Pourquoi? Par exemple, il est moins probable que je fasse des mystères dans mes modèles si je renomme le chemin dans le contrôleur.

Dans d'autres cadres, cela est autorisé (voir Symfony, par exemple).

17
JeanValjean

Il devrait être possible d'utiliser des espaces réservés dans @RequestMapping, Comme par exemple @RequestMapping("${foo.bar}"). Jetez un œil à la documentation pour plus de détails:

Les modèles dans les annotations @RequestMapping Prennent en charge les espaces réservés ${…​} Par rapport aux propriétés locales et/ou aux propriétés système et aux variables d'environnement. Cela peut être utile dans les cas où le chemin vers lequel un contrôleur est mappé peut devoir être personnalisé via la configuration. Pour plus d'informations sur les espaces réservés, consultez les javadocs de la classe PropertyPlaceholderConfigurer.

27
Bohuslav Burghardt

Merci pour l'aide. C'est ma contribution ... Aucune dépendance n'est nécessaire car maven fait tout par lui-même.

Dans le fichier de propriétés - utilisez l'interpolation maven, comme ci-dessous:

vs= v1

us= users
me= messages

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

Dans votre fichier destin, par exemple contrôleur/ressource (dans mycase):

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