在 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

如你所见,配置生效。

可以把配置文件定义在本地磁盘上,这样的话每次修改配置属性后只需要重启服务器就好,比重新编译、打包省事多了。