how to apply user defined properties value to @RequestMapping

时间秒杀一切 提交于 2019-12-20 03:15:20

问题


I have several @RequestMapping which value will subject to change from "/XXX" to "/V100" on someday. So I need to define it in properties. I've googled and there's way using application.properties but I have to keep "/XXX" value in a user defined properties like a "local.properties". Is it possible to define @RequestMapping value on a user defined properties?

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

** UPDATE : tried several hours and get it to work.

my.properties

api.version=V100

mvc-context.xml

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

controller

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

tomcat log

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

回答1:


In addition to the xml solution provided by @JustinB, here is an annotation-only solution (tested with Spring Boot):

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

...

}

The value of api.version is read from If src/main/resources/user.properties if it exists. If the file is missing or api.version is not set, it will default to an empty string.

Beware, if api.version is also defined in application.properties it will take precedence whether or not user.properties exists and api.version is set in it.

More examples of @PropertySource are provided here.



来源:https://stackoverflow.com/questions/36885641/how-to-apply-user-defined-properties-value-to-requestmapping

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!