明天在迁徙一个老我的项目时,查看Swagger文档,发现间接报错No operations defined in spec。
跟了一会儿代码后发现返回的数据是有的。api也都被swagger扫描到了。又看了会儿发现问题在于零碎里有个类实现了WebMvcConfigurer。
把@Configuration敞开了swagger就失常了。所以是该类里的货色导致了swagger异样。最初网上找了一会儿发现起因是 configureMessageConverters导致的。
修复办法:
1.新建一个类
import com.google.gson.JsonElement;
import com.google.gson.JsonParser;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;
import springfox.documentation.spring.web.json.Json;
import java.lang.reflect.Type;
public class SpringfoxJsonToGsonAdapter implements JsonSerializer<Json> {
@Override
public JsonElement serialize(Json json, Type type, JsonSerializationContext context) {
//这里原博客用了过期的办法,把它改过来了
return JsonParser.parseString(json.value());
}
}
2.批改WebMvcConfigurer的实现类
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
converters.removeIf(httpMessageConverter -> httpMessageConverter instanceof MappingJackson2HttpMessageConverter);
converters.add(gsonHttpMessageConverters());
}
@Bean
public GsonHttpMessageConverter gsonHttpMessageConverters() {
Gson gson = new GsonBuilder()
.registerTypeAdapter(Json.class, new SpringfoxJsonToGsonAdapter())
.create();
GsonHttpMessageConverter gsonConverter = new GsonHttpMessageConverter(gson);
return gsonConverter;
}
重启下问题就解决了
参考原博客: https://codeleading.com/artic…
发表回复