Swagger2报No operations defined in spec! 关闭WebMvcConfig的注解后又正常

lihualuo

​ 今天在迁移一个老项目时,查看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...

阅读 735
1 声望
0 粉丝
0 条评论
1 声望
0 粉丝
文章目录
宣传栏