0

我正在使用springdoc-openapi-ui swagger。我不想硬编码swagger documentation. 我想从属性文件中读取这些值。

当我尝试出现编译错误时The value for annotation attribute Operation.summary must be a constant expression.

我知道它正在寻找常量表达式,但我不想在我的代码中硬编码这些值。

在此处输入图像描述

请在此处找到我的控制器代码

@RestController
@PropertySource("classpath:test.properties")
public class TestController {

    @Autowired
    private TestService testService;

    @Autowired
    private static Environment environment;

    final String SUMMARY = environment.getProperty("operationSummary");

    @Operation(summary = SUMMARY, description = "Returns a list", tags = { "Test" })
    @ApiResponses(value = { @ApiResponse(responseCode = "200", description = "Successful operation") })
    @GetMapping(path = "/description/{id}")
    public List<Test> getDescriptionById(@PathVariable String id) {

        return testService.getDescriptionById(id);
    }
}

有没有办法在端点注释中添加不同语言的消息属性?

4

2 回答 2

0

您拥有带有 swagger 注释的 spring 属性支持:

  • Spring属性解析器对@Info的支持:title-description-version-termsOfService
  • spring 属性解析器对@Info.license 的支持:name - url
  • spring 属性解析器对@Info.contact 的支持:name - email - url
  • @Operation 对 spring 属性解析器的支持:描述 - 总结
  • Spring属性解析器对@Parameter的支持:描述-名称
  • Spring 属性解析器对@ApiResponse 的支持:描述
  • 也可以为@OAuthFlow 声明安全 URL:openIdConnectUrl - authorizationUrl - refreshUrl - tokenUrl
  • 通过将 springdoc.api-docs.resolve-schema-properties 设置为 true 来支持 @Schema: name - title - description 的 spring 属性解析器
于 2020-08-13T17:47:18.897 回答
0

很高兴分享答案,所以这对其他人有用
最后,我得到了使用外部属性的答案swagger documentation

我们可以通过创建属性或 yaml 文件来外部化文档并用作propertysource.
然后我们可以使用${propertyname}如下所示的招摇注释中的密钥。

@Tag(name = "Person Data")
@PropertySource("classpath:person-data-controller.properties")
public class PersonDataController {

    @Operation(summary = "${person.summary}", description = "${person.description}")
    public getPersonData(){
    
    }
}

我们还可以添加@PropertySource("classpath:person-data-controller.properties")SwaggerConfiguration 类以避免在每个控制器上重复

于 2021-02-05T11:39:42.237 回答