如何使用 Spring MVC 对我的 API 进行版本控制?

How to version my API with Spring MVC?

现在,我的 API 的 URL 是例如:

/api/users

使用 Spring MVC:

@RequestMapping("/api/users")

我想对此进行版本化 api:

/api-v1.0/users

最好能够在 @RequestMapping 注释中使用 SpEL,但是 it is unfortunately not possible:

@RequestMapping("/api-#{appProps['version']}/users")

那还有哪些选择呢?

试试 @RequestMapping("/api-${version}/users")

有关详细信息,请参阅 http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html#mvc-ann-requestmapping-placeholders

@RequestMapping 从 属性 占位符值解析。所以像下面这样定义一个 PropertySourcesPlaceHolderConfigurer。

<context:property-placeholder location="classpath*:*.properties"/>

然后使用如下语法。

@RequestMapping("/api-${version}/users")