【问题标题】:JerseyConfig overrides @RestController in spring boot applicationJerseyConfig 在 Spring Boot 应用程序中覆盖 @RestController
【发布时间】:2019-08-16 07:39:04
【问题描述】:

我正在尝试在现有的 sping 启动应用程序中使用 JerseyConfig 类,但由于某种原因,当我添加此配置时:

    @Component
    public class JerseyConfig extends ResourceConfig  {
    public JerseyConfig() {
         register(Users.class);
         register(Groups.class);
         property("SCIM_IMPLEMENTATION_INSTANCE", new JerseyApplication());
      }
    }

@RestController 端点不再像 expexted 那样工作。应用此 JerseyConfig 类后,它们都返回 404。所有 Jersey 端点都可以正常工作。

我可以在同一个应用程序中使用 JAX rs 端点(在我的情况下我使用 Jersey)和 @RestCotroller 吗?我需要一些配置来将我现有的 REST 服务与新的 JAX rs 端点分开。如果有人可以提供帮助,我将不胜感激。谢谢!

【问题讨论】:

标签: java spring spring-boot jersey jax-rs


【解决方案1】:

有一种将 Jersey 资源和 Spring 控制器结合起来的解决方法。您需要对设置进行一些更改。

  1. 将 JerseyConfig 的注解从 @Component 更改为 @Configuration 并添加要扫描的控制器包

    // scan the resources package for your resources / restControler public JerseyConfig() { // other code packages(package_of_your_rest_controller); }

  2. 将你的rest控制器的注释从@ReuestMapping更改为@Path 例如。如果你的控制器是这样的:

    @RestController @零件 公共类 MyRestController {

    @RequestMapping("/foo")
    public String foo() {
        return "foo";
    }
    

    }

    变成这样:

    @Path("/") @零件 公共类 MyRestController {

    @Path("/foo")
    public String foo() {
        return "foo";
    }
    

    }

如果可以,请尝试一次。

【讨论】:

  • 您好 :) 感谢您的回答!我所做的就是将@ApplicationPath("/path") 添加到ResourceConfig 类中,效果很好!
猜你喜欢
  • 1970-01-01
  • 2018-04-08
  • 2020-12-29
  • 1970-01-01
  • 1970-01-01
  • 2019-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多