繁体   English   中英

Spring Boot 中的 JAX-RS 和 MVC

[英]JAX-RS and MVC at Spring Boot

我有一个用作 MVC 的 Spring Boot 应用程序。 我想在我的应用程序中使用 JAX-RS 而不使用 Spring 注释。 我将在不同的类中同时使用 JAX-RS 注释组件和 MVC 组件。 当我添加 Jersey 资源配置时(不注册任何端点):

@Component
public class JerseyConfig extends ResourceConfig {

}

我启动了应用程序,但未显示登录页面。 当我打开登录页面时,它像文档一样被下载。 我该如何解决?

1) 确保您的应用程序的 Spring Boot 配置文件区分 Spring MVC,例如执行器端点和 Jersey 资源端点:

应用程序.yml

...
# Spring MVC dispatcher servlet path. Needs to be different than Jersey's to enable/disable Actuator endpoints access (/info, /health, ...)
server.servlet-path: /
# Jersey dispatcher servlet
spring.jersey.application-path: /api
...

2) 确保您的 Spring Boot 应用程序通过以下方式扫描位于特定包(即 com.asimio.jerseyexample.config)中的组件:

@SpringBootApplication(
    scanBasePackages = {
        "com.asimio.jerseyexample.config", "com.asimio.jerseyexample.rest"
    }
)

3) Jersey 配置类实现:

package com.asimio.jerseyexample.config;
...
@Component
public class JerseyConfig extends ResourceConfig {

    ...        
    public JerseyConfig() {
        // Register endpoints, providers, ...
        this.registerEndpoints();
    }

    private void registerEndpoints() {
        this.register(HelloResource.class);
        // Access through /<Jersey's servlet path>/application.wadl
        this.register(WadlResource.class);
    }
}

4)使用JAX-RS(泽西岛)的资源实现:

package com.asimio.jerseyexample.rest.v1;
...
@Component
@Path("/")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public class HelloResource {

    private static final Logger LOGGER = LoggerFactory.getLogger(HelloResource.class);

    @GET
    @Path("v1/hello/{name}")
    public Response getHelloVersionInUrl(@ApiParam @PathParam("name") String name) {
        LOGGER.info("getHelloVersionInUrl() v1");
        return this.getHello(name, "Version 1 - passed in URL");
    }
...
}

更详细的操作方法可以在我几个月前创建的博客中找到, 使用 Spring Boot、Jersey Swagger 和 Docker 的微服务

可能您可以将路径映射添加到单独的 REST 资源,默认情况下'jerseyServlet' 映射到 [/*],以将其更改为 /myrest

@Configuration
@ApplicationPath("/myrest")
public class JerseyConfig extends ResourceConfig {}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM