关于springboot:Swagger2报No-operations-defined-in-spec-关闭WebMvcConfig的注解后又正常

10次阅读

共计 1260 个字符,预计需要花费 4 分钟才能阅读完成。

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

正文完
 0