项目计划将SpringBoot resources 下的静态 excel 提取成外部化配置,于是配了:
spring: autoconfigure: exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure web: resources: # 外部化配置优先于内部 static-locations: file:/static/,classpath:/static/
但配置没生效。
经排查,
idx2 哪里来的?
implements WebMvcConfigurer
解决方案:去掉 WebMvcConfigurer实现类 中的第一条配置
registry.addResourceHandler("/**").addResourceLocations( "classpath:/static/");
总结:
外部化配置的执行路径
1. 加载yml配置
org.springframework.boot.autoconfigure.web.WebProperties.Resources#setStaticLocations
2. 初始化请求处理器链
org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration.WebMvcAutoConfigurationAdapter#addResourceHandlers
org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry#getHandlerMapping
3. 请求过来后分发,查找请求处理器
org.springframework.web.servlet.DispatcherServlet#doDispatch