如何将用户定义的属性值应用于@RequestMapping

how to apply user defined properties value to @RequestMapping

我有几个 @RequestMapping 有一天,它们的值会从“/XXX”更改为“/V100”。所以我需要在属性中定义它。我在谷歌上搜索过,有使用 application.properties 的方法,但我必须在用户定义的属性(如 "local.properties" 中保留“/XXX”值。是否可以在用户定义的属性上定义 @RequestMapping 值?

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

** UPDATE :尝试了几个小时并让它工作。

my.properties

api.version=V100

mvc-context.xml

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

控制器

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

tomcat 日志

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

除了@JustinB 提供的 xml 解决方案外,这里还有一个仅注释的解决方案(使用 Spring Boot 测试):

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

...

}

从If src/main/resources/user.properties中读取api.version的值(如果存在)。如果文件丢失或未设置 api.version,它将默认为空字符串。

注意,如果 api.version 也在 application.properties 中定义,则无论是否 user.properties 存在并且其中设置了 api.version

提供了更多@PropertySource 示例here