在 Properties / Yaml 中配置 @RequestMapping 的 value 值
在 Spring Boot 中,我们通过 @RequestMapping
注解来定义 API 端点,如下:
@RestController
@RequestMapping
public class DemoController {
@GetMapping("/demo")
public ResponseEntity<String> demo () {
return ResponseEntity.ok("ok");
}
}
@GetMapping
是 @RequestMapping(method = RequestMethod.POST)
的快捷方式。
通过其 value
属性(path
属性的别名) 设置 API 的映射路径。
在本例中,路径就是:/demo
。 启动应用,使用 cURL 进行访问。
$ curl localhost:8080/demo
ok
一般来说,API 的路径不会轻易修改。而且路径是硬编码定义在注解中的,如果要修改的话,需要编辑源码重写编译打包。
但是,总有例外。如果我们想要灵活地修改 API 路径,那么可以在 @RequestMapping
中使用表达式从配置文件获取值。
先在配置文件(Properties / Yaml)中定义 API 路径:
app:
router:
demo: "/demo/v1"
然后,在 @RequestMapping
使用 ${app.router.demo}
获取该值,作为 API 的路径:
@RestController
@RequestMapping
public class DemoController {
@GetMapping("${app.router.demo}")
public ResponseEntity<String> demo () {
return ResponseEntity.ok("ok");
}
}
重启应用,使用 cURL 进行测试:
$ curl localhost:8080/demo/v1
ok
如你所见,配置生效。
可以把配置文件定义在本地磁盘上,这样的话每次修改配置属性后只需要重启服务器就好,比重新编译、打包省事多了。