SpringBoot整合Swagger问题整理

1、swagger版本与springboot版本

本项目使用的是Swagger版本是2.7.0,该版本对应的spring版本是4.3.10,所使用的SpringBoot版本在1.5.6.RELEASE版本左右都是可以的。一般版本差距太大才会导致冲突。

2、按步骤导入jar包,添加配置类后,启动时未报错,但访问http://localhost:8080/swagger-ui.html时页面显示空白,如下:

查看控制台并无报错,查看log日志也无明显错误信息,访问http://localhost:8080/v2/api-docs发现有返回值但是只有一个key为value的json串返回,因此有可能是对返回值处理时出现了问题。查询资料得知有可能有fastjson有关,而项目中之前为了处理返回日期类型为时间戳,自定义了HttpMessageConverter,里面有用到fastjson包中JSON对象,注解掉相关代码:

@Override
public void configureMessageConverters(List> converters) {
    super.configureMessageConverters(converters);
    converters.add(responseBodyConverter());
    // converters.add(new MappingHttpMessageConverter());
}

重启服务器可正常显示,不过时间日期返回变为时间戳。

3、SpringBoot集成Swagger后时间日期返回设置格式

网上有多种解决方案,这里找到了一种相同简便且可行的方案,采用FastJsonHttpMessageConverter进行消息转化,如下所示:

@Override
public void configureMessageConverters(List> converters) {
    super.configureMessageConverters(converters);
    converters.add(responseBodyConverter());
        
    // 1.定义一个convert 转换消息的对象
    FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
    // 2 添加fastjson 的配置信息 比如 是否要格式化 返回的json数据
    FastJsonConfig fastJsonConfig = new FastJsonConfig();
    fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);
    fastJsonConfig.setDateFormat("yyyy-MM-dd HH:mm:ss");
    fastConverter.setFastJsonConfig(fastJsonConfig);
    // 解决乱码的问题
    List fastMediaTypes = new ArrayList<>();
    fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
    fastConverter.setSupportedMediaTypes(fastMediaTypes);
    converters.add(fastConverter);
}

利用FastJsonConfig可设置日期的格式,经测试可行。

4、关于页面空白需添加静态资源映射问题

本项目未遇到该问题,经测试是否添加都不会产生影响,这里只贴出该配置代码,如有遇到相似问题也可尝试:

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("swagger-ui.html")
            .addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars*//**")
            .addResourceLocations("classpath:/META-INF/resources/webjars/");
        super.addResourceHandlers(registry);
    }

 

你可能感兴趣的:(SpringBoot整合Swagger问题整理)