让我们考虑一个 SpringBoot 2+ Web 应用程序。
有几个用 Jersey 编写的遗留端点。 所有新端点都应该使用 Spring MVC 定义。
由于 Jersey 端点无法立即转换为 MVC,我正在寻找一种方法来顺利进行转换:
互联网指南中讨论的将 Jersey 和 MVC 保持在一起的最流行方法提到了在 Jersey 配置中使用
@ApplicationPath
@Configuration
@ApplicationPath("/special/prefix")
class JerseyConfig extends ResourceConfig {
...
}
不幸的是,这导致对每个 Jersey 端点路径使用
"/special/prefix"
,这与意图 #2 相矛盾(保留不变的 URL 路径...)。
如果能做相反的事情那就太好了:为 Spring MVC 端点定义特殊的路径前缀或者甚至更优雅的方法(例如使用标头路由到 MVC),并保持 Jersey 路径不变 - 就像“没有前缀的默认路径”。
默认情况下,以最少的配置路由到 Jersey 端点的标准方法是什么?如果找不到,则路由到 Spring MVC 端点?
应用程序属性
spring.mvc.servlet.path=/mvc/prefix
JerseyConfig.java(标准 Jersey 配置)
@Configuration
@ApplicationPath("/") // this is optional; by default (path == "/") if @ApplicationPath is absent
class JerseyConfig extends ResourceConfig {
JerseyConfig() {
packages("my.example.jersey", "other.package"); // recursive scan
}
}
我们可以选择为所有端点添加属性设置全局公共前缀
server.servlet.context-path=/global/api/prefix
。