明天在迁徙一个老我的项目时,查看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...