问题
在前面的Swagger2的基本配置中是可以访问到的
但当自定义继承配置WebMvcConfigurationSupport后便无法访问到该页面,原因参考请看参考资料。
首先看我的自定义配置,
*************
* HttpMessageConverter转换处理
* 处理转义hmtl标签为正常的hmtl标签
* @author zjcjava@163.com
*
*/
@Configuration
public class WebConfig extends WebMvcConfigurationSupport {
@Bean
public MappingJackson2HttpMessageConverter customJackson2HttpMessageConverter() {
MappingJackson2HttpMessageConverter jsonConverter = new MappingJackson2HttpMessageConverter();
ObjectMapper objectMapper = new ObjectMapper();
(
DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
().setNullValueSerializer(
new JsonSerializer<Object>() {
@Override
public void serialize(Object value, JsonGenerator jgen,
SerializerProvider provider) throws IOException,
JsonProcessingException {
("");
}
});
// 进行HTML解码
(new SimpleModule().addSerializer(
, new JsonSerializer<String>() {
@Override
public void serialize(String value, JsonGenerator jgen,
SerializerProvider provider) throws IOException,
JsonProcessingException {
(StringEscapeUtils.unescapeHtml4(value));
}
}));
(objectMapper);
return jsonConverter;
}
@Override
public void configureMessageConverters(
List<HttpMessageConverter<?>> converters) {
(customJackson2HttpMessageConverter());
super.addDefaultHttpMessageConverters(converters);
}
}
如果我把该文件全部注释掉则会正常显示,否则无法访问到,
解决方法
如果继承了WebMvcConfigurationSupport,则在配置文件在中配置的相关内容会失效,需要重新指定静态资源
因此参照资料2我做了处理如下,在该代码的末尾加上静态资源配置
代码加在
*************
* HttpMessageConverter转换处理
* 处理转义hmtl标签为正常的hmtl标签
* @author zjcjava@163.com
*
*/
@Configuration
public class WebConfig extends WebMvcConfigurationSupport {
@Bean
public MappingJackson2HttpMessageConverter customJackson2HttpMessageConverter() {
MappingJackson2HttpMessageConverter jsonConverter = new MappingJackson2HttpMessageConverter();
ObjectMapper objectMapper = new ObjectMapper();
(
DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
().setNullValueSerializer(
new JsonSerializer<Object>() {
@Override
public void serialize(Object value, JsonGenerator jgen,
SerializerProvider provider) throws IOException,
JsonProcessingException {
("");
}
});
// 进行HTML解码
(new SimpleModule().addSerializer(
, new JsonSerializer<String>() {
@Override
public void serialize(String value, JsonGenerator jgen,
SerializerProvider provider) throws IOException,
JsonProcessingException {
(StringEscapeUtils.unescapeHtml4(value));
}
}));
(objectMapper);
return jsonConverter;
}
@Override
public void configureMessageConverters(
List<HttpMessageConverter<?>> converters) {
(customJackson2HttpMessageConverter());
super.addDefaultHttpMessageConverters(converters);
}
/**
* 发现如果继承了WebMvcConfigurationSupport,则在yml中配置的相关内容会失效。 需要重新指定静态资源
*
* @param registry
*/
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
("/**").addResourceLocations(
"classpath:/static/");
("").addResourceLocations(
"classpath:/META-INF/resources/");
("/webjars/**").addResourceLocations(
"classpath:/META-INF/resources/webjars/");
super.addResourceHandlers(registry);
}
/**
* 配置servlet处理
*/
@Override
public void configureDefaultServletHandling(
DefaultServletHandlerConfigurer configurer) {
();
}
}
参考资料
SpringBoot配置SwaggerUI访问404错误处理1
SpringBoot配置SwaggerUI访问404错误处理2