Reputation: 17713
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).
Upvotes: 26
Views: 31849
Reputation: 1
If the variable cannot be found and getting the "Unable to resolve placeholder" error, make sure the name is defined in "additional-spring-configuration-metadata.json" file.
Upvotes: 0
Reputation: 534
As bohuslav burghardt has mentioned this is totally possible.
So if you have a common domain stored in your application.properties
file you can use placeholders to call it in your controller/s and even chain placeholders & text together.
For Example...
In your .properties file
app.domain = mydomain/v1
In the controller
@RestController
@RequestMapping("${app.domain}/my-controller")
public class MyController {
Upvotes: 1
Reputation: 928
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 {
//
Upvotes: 3
Reputation: 34766
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.
Upvotes: 49