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

时间:2016-04-27 09:26:08

标签: spring properties request-mapping

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

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

** 更新:尝试了几个小时并让它发挥作用。

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 log

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

1 个答案:

答案 0 :(得分:1)

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

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

...

}

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

请注意,如果 application.properties 中也定义了api.version,则 user.properties 是否存在且api.version是否优先设置在其中。

提供了更多@PropertySource示例here