Spring MVC 如何在SpringBoot 3中同时使用Jersey和MVC?

z9ju0rcb  于 2022-12-29  发布在  Spring
关注(0)|答案(1)|浏览(168)

让我们考虑一个SpringBoot 2+ Web应用程序。
有几个遗留端点是用Jersey编写的,所有新端点都应该使用SpringMVC定义。
由于Jersey端点不能立即转换为MVC,因此我正在寻找一种方法来平稳地进行转换:
1.在应用程序中同时保留Jersey和MVC端点
1.保留指向Jersey端点的所有URL路径不变
1.尽量减少对新MVC端点路径的干扰
互联网指南中讨论的将Jersey和MVC结合在一起的最流行的方法提到了使用@ApplicationPath进行Jersey配置

@Configuration
@ApplicationPath("/special/prefix")
class JerseyConfig extends ResourceConfig {
    ...
}

不幸的是,这导致对每个Jersey端点路径使用"/special/prefix",这与意图#2(保持不变的URL路径...)相矛盾。
最好反其道而行之:为SpringMVC端点定义特殊的路径前缀,或者可能是更优雅的方法(例如,使用头来路由到MVC),并保持Jersey路径不变,就像“没有前缀的默认路径”一样。

默认情况下路由到Jersey端点(如果找不到,则路由到Spring MVC端点)的标准方法是什么?

t5zmwmid

t5zmwmid1#

    • 应用程序.属性**
spring.mvc.servlet.path=/mvc/prefix
    • 泽西岛配置. java**(标准泽西岛配置)
@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添加属性设置全局公共前缀。

相关问题