Java Swagger UI不显示来自自定义注释界面的响应模型

Java Swagger UI不显示来自自定义注释界面的响应模型,java,spring-boot,swagger,Java,Spring Boot,Swagger,我正在尝试为招摇过市的文档定义全局响应。我有以下注释界面: import io.swagger.annotations.ApiResponse; import io.swagger.annotations.ApiResponses; import org.springframework.web.bind.annotation.ResponseBody; import java.lang.annotation.*; @Documented @Target(ElementType.METHOD)

我正在尝试为招摇过市的文档定义全局响应。我有以下注释界面:

import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import org.springframework.web.bind.annotation.ResponseBody;

import java.lang.annotation.*;

@Documented
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@ApiResponses(value = {
        @ApiResponse(
                code = 200,
                message = "Successful status response"
        ),
        @ApiResponse(
                code = 401,
                message = "Unauthorized",
                response = Payload.Error.class
        ),
        @ApiResponse(
                code = 403,
                message = "Forbidden",
                response = Payload.Error.class
        ),
        @ApiResponse(
                code = 404,
                message = "Not Found",
                response = Payload.Error.class
        ),
        @ApiResponse(
                code = 500,
                message = "General Server Error",
                response = Payload.Error.class
        ),
})
@ResponseBody
public @interface PayloadResponse {
}

在我的控制器中,我使用如下界面:

    @ApiOperation("Get user details after login")
    @PayloadResponse
    @GetMapping("/user")
    Payload<User> fetchUser(
            @ApiIgnore
            @RequestHeader(HttpHeaders.AUTHORIZATION) String authorization
    );
@ApiOperation(“登录后获取用户详细信息”)
@有效载荷响应
@GetMapping(“/user”)
有效载荷获取用户(
@阿皮诺
@RequestHeader(HttpHeaders.AUTHORIZATION)字符串授权
);
这里的
Payload.Error
Payload
的一个内部类。但无论如何,我也尝试了其他一些类,如:String、Map等。但是,swagger ui始终显示空响应:


从这一点开始,我怎样才能做到尽可能少的更改?Springfox 3.0默认使用v3模型,但您使用的是
io.swagger.annotations.ApiResponses
而不是
io.swagger.v3.oas.annotations.responses.apirresponses
io.swagger.annotations.ApiResponse
而不是
io.swagger.v3.oas.annotations.responses.ApiResponse

此问题已记录在

但解决办法也很简单。只需添加一个属性就可以用v2模型覆盖v3模型

springfox.documentation.swagger.use-model-v3=false
它就像一个符咒。使用
@PayloadResponse
和端点处的直接注释

我希望这是你想要的。

我正在使用springfox-Swagger 2 v3.0.0。ModelRef在该版本中已被弃用。而这不是我想要的答案。我的应用程序中有8个微服务,以后可能还会有更多。我不想在每个服务的招摇过市配置中设置全局响应消息。我想在全球范围内管理全局响应,最好使用注释之类的内容。@Dipu我已经更新了答案,希望这是您想要的答案。