SpringMvcConfigurer.java 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package com.hb.proj;
  2. import java.util.Arrays;
  3. import java.util.List;
  4. import org.springframework.boot.web.servlet.FilterRegistrationBean;
  5. import org.springframework.context.annotation.Bean;
  6. import org.springframework.context.annotation.Configuration;
  7. import org.springframework.core.Ordered;
  8. import org.springframework.format.FormatterRegistry;
  9. import org.springframework.web.cors.CorsConfiguration;
  10. import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
  11. import org.springframework.web.filter.CorsFilter;
  12. import org.springframework.web.method.support.HandlerMethodArgumentResolver;
  13. import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
  14. import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
  15. @Configuration
  16. public class SpringMvcConfigurer implements WebMvcConfigurer {
  17. @Override
  18. public void addResourceHandlers(ResourceHandlerRegistry registry) {
  19. registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
  20. WebMvcConfigurer.super.addResourceHandlers(registry);
  21. }
  22. @Override
  23. public void addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers) {
  24. resolvers.add(new CustomMethodArgumentResolver());
  25. WebMvcConfigurer.super.addArgumentResolvers(resolvers);
  26. }
  27. @Override
  28. public void addFormatters(FormatterRegistry registry) {
  29. registry.addConverter(new StringToDateConverter());
  30. WebMvcConfigurer.super.addFormatters(registry);
  31. }
  32. @Bean
  33. public FilterRegistrationBean<CorsFilter> corsFilter() {
  34. // 跨域配置
  35. CorsConfiguration configuration = new CorsConfiguration();
  36. configuration.setAllowedOrigins(Arrays.asList("*"));
  37. configuration.setAllowedMethods(Arrays.asList("GET", "POST", "PUT", "HEAD", "DELETE", "OPTION"));
  38. configuration.setAllowedHeaders(Arrays.asList("*"));
  39. UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
  40. source.registerCorsConfiguration("/**", configuration);
  41. // 有多个filter时此处可设置改CorsFilter的优先执行顺序,保证CorsFilter在其他过滤器之前执行(避免其他过滤器执行异常,导致CorsFilter没执行,从而导致跨域失效)
  42. FilterRegistrationBean<CorsFilter> bean = new FilterRegistrationBean<>(new CorsFilter(source));
  43. bean.setOrder(Ordered.HIGHEST_PRECEDENCE);
  44. return bean;
  45. }
  46. }