gpt4 book ai didi

java - 如果使用 WebMvcConfigurationSupport 添加转换器,Swagger OpenAPI 3 不会在 springboot 2 上显示

转载 作者:太空宇宙 更新时间:2023-11-04 09:21:12 27 4
gpt4 key购买 nike

我有一个带有 swagger 文件的 springboot 应用程序。我使用任何 swagger Maven 插件,它都可以工作。

enter image description here

我的 pom.xml 文件:

    <dependency>
<groupId>io.swagger.core.v3</groupId>
<artifactId>swagger-core</artifactId>
<version>2.0.9</version>
</dependency>
<dependency>
<groupId>io.swagger.core.v3</groupId>
<artifactId>swagger-annotations</artifactId>
<version>2.0.9</version>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId>
<version>1.5.23</version>
</dependency>
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-ui</artifactId>
<version>1.1.45</version>
</dependency>

我使用 java enum:

public enum TempReadingSource {
COLDROOM("coldroom"),
LOCAL("local"),
OVEN("oven");

private String value;

TempReadingSource(String value) {
this.value = value;
}

@Override
@JsonValue
public String toString() {
return String.valueOf(value);
}

@JsonCreator
public static TempReadingSource fromValue(String text) {
for (TempReadingSource b : TempReadingSource.values()) {
if (String.valueOf(b.value).equals(text)) {
return b;
}
}
return null;
}
}

我遇到了这个错误:

"Failed to convert value of type 'java.lang.String' to required type 'com.foo.TempReadingSource';

所以我在 Springboot2 配置中添加了一个转换器:

@Configuration
public class StrubConfig extends WebMvcConfigurationSupport {

@Override
public FormattingConversionService mvcConversionService() {
FormattingConversionService f = super.mvcConversionService();
f.addConverter(new TempReadingSourceConverter());
return f;
}

}

和:

public class TempReadingSourceConverter implements Converter<String, TempReadingSource> {
@Override
public TempReadingSource convert(String source) {
try {
return TempReadingSource.fromValue(source);
} catch(Exception e) {
return null;
}
}
}

这个Converter解决了我的API(通过postman),但现在找不到swagger-ui:

enter image description here

最佳答案

解决方案是:

@Configuration
public class StrubConfig {

@Autowired
private FormattingConversionService conversionService;

@PostConstruct
public void registerCustomConverter() {
conversionService.addConverter(new TempReadingSourceConverter());
}

}

关于java - 如果使用 WebMvcConfigurationSupport 添加转换器,Swagger OpenAPI 3 不会在 springboot 2 上显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58307485/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com