au printemps (démarrage), je peux externaliser les valeurs d'annotation aux propriétés d'application / environnement à l'aide du $ {...} code> Syntaxe: @RequestMapping(
"${some.path.property[0]:--}",
"${some.path.property[1]:--}",
"${some.path.property[2]:--}",
"${some.path.property[3]:--}",
"${some.path.property[4]:--}",
"${some.path.property[5]:--}",
"${some.path.property[6]:--}",
"${some.path.property[7]:--}",
"${some.path.property[8]:--}",
"${some.path.property[9]:--}"
)
3 Réponses :
Avez-vous essayé cela?:
@RequestMapping("${some.path.property}")
Oui, je l'ai essayé (avec et sans espace après la virgule) et cela ne fonctionne pas. Je suis sur la dernière botte de printemps 2.1.2
Pour développer, j'ai essayé de définir un tableau à partir d'une propriété CSV et fonctionne: @value ("$ {{quelque.csv.property}") string [] myvalue; code> mais quand j'utilise la même propriété pour Une annotation elle-même, elle n'est pas scindée sur des virgules, mais est juste prise comme une seule chaîne: @RequestMapping ("$ {{autre.csv.property}") code> définit un seul chemin avec valeur "/ un, / deux" code>
J'ai compris comment utiliser Spel pour scinder explicitement une chaîne en une matrice: "# {'$ {quelque.csv.property}'. Split ('[] +')}" code> mais , cela fonctionne pour @value code> mais pas pour @RequestMapping code>
Si vous avez un fichier de propriétés YAML (ne répétez pas votre principe autonome :)), vous pouvez le faire comme si: si vous utilisez @getMapping (ou @ @ RequestMapping) Vous pouvez le faire comme ceci dans votre contrôleur: p> et voici le journal p>
Oui, j'ai application.yaml code>. Je peux faire cela, mais je ne peux pas changer le numéro numéro b> des chemins du fichier de configuration.
Je pense que la solution @MICHAL est plus adaptée à votre cas, le seul problème est que vous ne pouvez pas hériter du chemin de Super Class (si vous avez un abstractController code> avec requisMapping ("/ API / V1 ") code> et votre SimpleController étend abstractController code>), dans ce cas, vous définissez le chemin complet de votre fichier de propriétés ou préfixe / suffixe de la valeur du fichier de propriétés avec une autre partie du chemin complet.
Dans mon cas, n'avez pas la question de l'héritage du chemin d'une superbe classe. Mais la solution de Michal ne fonctionne tout simplement pas. Je peux l'utiliser pour initialiser un tableau: @Value ("$ {{{autre.csv.property}") string [] myvalue; code> mais pas une valeur d'annotation elle-même. Dans ce cas, la chaîne n'est pas divisée en une matrice.
Vous pouvez essayer Créer manuel code> pour ajouter des URL, voici un exemple d'utilisation d'utiliser SIMPLEURLHANDLERMAPTER CODE> paths: ping, ping1, ping2, ping3
Oui, c'est certainement une option. Un peu lourdement lourd cependant.