Я обновляю проект с Spring 4 до Spring 5, но загрузка статических ресурсов не работает.
У меня есть свои ресурсы в
src/main/resources/static/js,
src/main/resources/static/css и
src/main/resources/static/images
Я добавляю ResourceHandler в WebConfig следующим образом
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = {"com.job.controllers"})
public class WebConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/static/**")
.addResourceLocations("classpath:/static/");
}
// more code here
}
Моя конфигурация безопасности, разрешающая доступ к статическим ресурсам, выглядит следующим образом
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().antMatchers("/login**", "/static/**").permitAll()
}
}
Когда я получаю доступ к http://localhost:8080/static/css/file.css
Получаю ошибку 405 Request method 'GET' not supported
Проблема, похоже, не в конфигурации безопасности, поскольку она не перенаправляет меня на страницу входа. Если я попробую использовать не общедоступный URL-адрес, например http://localhost:8080/some-place/css/file.css, я буду перенаправлен на страницу входа.
Проблема, похоже, в ResourceHandler.
Мои зависимости:
spring-framework - 5.0.2.RELEASE and spring-security-5.0.0.RELEASE
Ни один из ответов на другие вопросы мне не подходит. другой вопрос Спасибо
Я понял, что когда я закомментировал строку @ComponentScan(basePackages = {"com.job.controllers"}) в классе WebConfig, статические ресурсы загрузятся.
Это означало, что проблема была в одном из моих контроллеров.
Один метод контроллера был сопоставлен @RequestMapping(params = "settings/view", method = RequestMethod.POST)
Это сопоставление отображалось как INFO Mapped "{[],methods=[POST],params=[settings/view]}" onto ..... в журналах запуска.
Это было неправильное сопоставление, и оно препятствовало загрузке статических ресурсов.
Когда я исправил params на value, как это => @RequestMapping(value = "settings/view", method = RequestMethod.POST), статические ресурсы загружены.
Спасибо
проверьте это stackoverflow.com/questions/46567681/…