Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Spring: define @RequestMapping value in a properties file

Tags:

Is it possible to define the value of a @RequestMapping annotation in Spring by defining it in a properties file?

Actually, I do something like:

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

But I would like to store the path /xxx in a properties file. Why? For instance, it is less likely that I do mystakes in my templates if I rename the path in the controller.

In other framework this is allowed (see Symfony, for instance).

like image 478
JeanValjean Avatar asked Aug 09 '15 12:08

JeanValjean


2 Answers

It should be possible to use placeholders in @RequestMapping, like for example @RequestMapping("${foo.bar}"). Take a look at the documentation for more details:

Patterns in @RequestMapping annotations support ${…​} placeholders against local properties and/or system properties and environment variables. This may be useful in cases where the path a controller is mapped to may need to be customized through configuration. For more information on placeholders, see the javadocs of the PropertyPlaceholderConfigurer class.

like image 117
Bohuslav Burghardt Avatar answered Jan 11 '23 19:01

Bohuslav Burghardt


Thx for the help. It is my contribution... No dependencies are necessary because maven do everything by itself.

In the property file - use maven interpolation, such as below:

vs= v1  us= users me= messages  url.user=${vs}/${us} url.mess=${vs}/${me} 

In your destiny file, for example controller/resource (in mycase):

@RestController //@RequestMapping("v1/users") <<<<<<instead this @RequestMapping("${url.user}")<<<<<<use this @Api(value = "API RESTFUL) public class UserResource { // 
like image 35
GtdDev Avatar answered Jan 11 '23 19:01

GtdDev