как применить значение пользовательских свойств к @RequestMapping

У меня есть несколько @RequestMapping, значение которых когда-нибудь изменится с "/XXX" на "/V100". Поэтому мне нужно определить это в свойствах. Я гуглил, и есть способ использовать application.properties, но я должен сохранить значение «/XXX» в определенных пользователем свойствах, таких как «local.properties». Можно ли определить значение @RequestMapping для пользовательских свойств?

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

** ОБНОВЛЕНИЕ: пробовал несколько часов и заработал.

мои.свойства

api.version=V100

mvc-контекст.xml

<context:property-placeholder ignore-unresolvable="true" location="/WEB-INF/config/property/my.properties"/>

контроллер

@RequestMapping("/${api.version}")

журнал кота

localhost-startStop-1> [2016-04-28 15:01:35.410] [INFO] [RequestMappingHandlerMapping] [534] Mapped "{[/V100/detail],methods=[GET]}"...

person JustinB    schedule 27.04.2016    source источник
comment
@RequestMapping("/XXX") эквивалентно @RequestMapping(value = "/XXX"), а value должно быть присвоено постоянное выражение, поэтому я не думаю, что то, что вы ищете, возможно.   -  person Marc Tarin    schedule 27.04.2016
comment
@MarcTarin Разве это не возможно? Запись значения в файл application.properties и использование @RequestMapping("#{id.of.the.prop}") будет работать. Я ищу способ записать значение для пользовательских свойств...   -  person JustinB    schedule 27.04.2016
comment
задача решена. см. раздел ОБНОВЛЕНИЕ...   -  person JustinB    schedule 28.04.2016
comment
мой плохой, я действительно узнал кое-что благодаря вам.   -  person Marc Tarin    schedule 28.04.2016
comment
В Spring Boot также есть ссылка параметр командной строки для добавления дополнительных файлов свойств.   -  person Marc Tarin    schedule 28.04.2016
comment
@MarcTarin Да, весенняя загрузка - хороший выбор, но наш проект ее не использует.   -  person JustinB    schedule 30.04.2016


Ответы (1)


В дополнение к решению xml, предоставленному @JustinB, вот решение только для аннотаций (протестировано с помощью Spring Boot):

@Controller
@PropertySource(value = "classpath:/user.properties", ignoreResourceNotFound = true)
@RequestMapping("/${api.version:}")
public class MyController {

...

}

Значение api.version считывается из If src/main/resources/user.properties, если оно существует. Если файл отсутствует или api.version не установлен, по умолчанию будет пустая строка.

Остерегайтесь, если api.version также определено в application.properties, оно будет иметь приоритет независимо от того, существует ли user.properties и установлено ли в нем api.version.

Дополнительные примеры @PropertySource приведены здесь.

person Marc Tarin    schedule 28.04.2016
comment
Более простая версия! - person JustinB; 30.04.2016