springboot2 虚拟路径设置_记一次springboot配置虚拟路径映射无效的问题

当我继承WebMvcConfiger类配置映射文件路径后一直无法访问到文件(报404)

@Configuration

public class WebMvcConfig implements WebMvcConfigurer {

@Override

public void addCorsMappings(CorsRegistry registry) {

registry

.addMapping("/**")

.allowedMethods("*")

.allowedOrigins("*")

.allowedHeaders("*");

}

@Override

public void addResourceHandlers(ResourceHandlerRegistry registry) {

/**

* 配置资源映射

* 意思是:如果访问的资源路径是以“/images/”开头的,

* 就给我映射到本机的“E:/images/”这个文件夹内,去找你要的资源

* 注意:E:/images/ 后面的 “/”一定要带上

*/

String os = System.getProperty("os.name");

if(os.toLowerCase().startsWith("win")){

registry.addResourceHandler("/images/**").addResourceLocations("file:C:/personal/data/ycj/file/");

}else if(os.toLowerCase().startsWith("lin")){

registry.addResourceHandler("/images/**").addResourceLocations("file:/opt/img/");

}

}

}

经过不断的面向百度编程后无果,突发奇想打断点观察类加载情况,继而发现此类并未被加载

到底是什么问题导致的呢?

此时突然发现项目中还有一个继承自WebMvcConfigurerAdapter的类

@Configuration

public class AliFastJsonConfig extends WebMvcConfigurationSupport {

/**

* 使用阿里 fastjson 作为JSON MessageConverter

* @param converters

*/

@Override

public void configureMessageConverters(List> converters) {

FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();

FastJsonConfig config = new FastJsonConfig();

config.setSerializerFeatures(

// 保留map空的字段

SerializerFeature.WriteMapNullValue,

// 将String类型的null转成""

SerializerFeature.WriteNullStringAsEmpty,

// 将Number类型的null转成0

SerializerFeature.WriteNullNumberAsZero,

// 将List类型的null转成[]

SerializerFeature.WriteNullListAsEmpty,

// 将Boolean类型的null转成false

SerializerFeature.WriteNullBooleanAsFalse,

// 避免循环引用

SerializerFeature.DisableCircularReferenceDetect,

//全局修改日期格式,默认为false

SerializerFeature.WriteDateUseDateFormat)

;

converter.setFastJsonConfig(config);

converter.setDefaultCharset(Charset.forName("UTF-8"));

List mediaTypeList = new ArrayList<>();

// 解决中文乱码问题,相当于在Controller上的@RequestMapping中加了个属性produces = "application/json"

mediaTypeList.add(MediaType.APPLICATION_JSON);

converter.setSupportedMediaTypes(mediaTypeList);

converters.add(converter);

}

}

经过百度发现继承WebMvcConfigurationSupport和实现WebMvcConfigurer 是配置WebMvc的两大方法,但如果各自继承或实现后同一个项目中只会有一个生效(具体的生效顺序待研究,但在我项目中只生效了继承WebMvcConfigurationSupport的配置类)

解决方法: 只保留其中一个配置类并将所有的配置放入其中。

你可能感兴趣的:(springboot2,虚拟路径设置)