我在Spring Boot 2中使用SimpleUrlHandlerMapping创建了一个专用的url映射器。
下面你可以看到一个简化的代码,它只使用一个控制器,只映射了2个url:/ url1和/ url2到PageController。
我的问题是,现在Spring不仅发送/ url1请求,而且还向PageController发送所有静态(js,css,...)请求。
为什么会发生这种情况,我该如何避免呢?
@Configuration
public class SimpleUrlHandlerMappingConfig {
@Autowired
private PageRepository pageRepository;
@Bean
public SimpleUrlHandlerMapping simpleUrlHandlerMapping() {
SimpleUrlHandlerMapping simpleUrlHandlerMapping
= new SimpleUrlHandlerMapping();
Map<String, Object> urlMap = fillMappingsFromDb();
simpleUrlHandlerMapping.setUrlMap(urlMap);
return simpleUrlHandlerMapping;
}
private Map<String, Object> fillMappingsFromDb() {
List<String> sefUrls = pageRepository.findMappings();
Map<String, Object> urlMap = new HashMap<>();
for (String sefUrl : sefUrls) {
urlMap.put(sefUrl, page());
}
return urlMap;
}
@Bean
public PageController page() {
return new PageController();
}
}
答案 0 :(得分:0)
您可以指定要从默认调度程序servlet中排除的资源。
假设您的静态内容位于名为resources的目录中:
使用xml
<mvc:resources mapping="/resources/**" location="/resources/" />
在扩展WebMvcConfigurerAdapter
@Override
public void addResourceHandlers(final ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
}