|
24 | 24 | import org.springframework.util.ClassUtils; |
25 | 25 | import org.springframework.web.cors.CorsConfiguration; |
26 | 26 | import org.springframework.web.cors.CorsConfigurationSource; |
| 27 | +import org.springframework.web.cors.PreFlightRequestHandler; |
27 | 28 | import org.springframework.web.filter.CorsFilter; |
28 | 29 | import org.springframework.web.servlet.handler.HandlerMappingIntrospector; |
29 | 30 |
|
@@ -98,24 +99,20 @@ private CorsFilter getCorsFilter(ApplicationContext context) { |
98 | 99 |
|
99 | 100 | static class MvcCorsFilter { |
100 | 101 |
|
101 | | - private static final String HANDLER_MAPPING_INTROSPECTOR_BEAN_NAME = "mvcHandlerMappingIntrospector"; |
102 | | - |
103 | 102 | /** |
104 | 103 | * This needs to be isolated into a separate class as Spring MVC is an optional |
105 | 104 | * dependency and will potentially cause ClassLoading issues |
106 | 105 | * @param context |
107 | 106 | * @return |
108 | 107 | */ |
109 | 108 | private static CorsFilter getMvcCorsFilter(ApplicationContext context) { |
110 | | - if (!context.containsBean(HANDLER_MAPPING_INTROSPECTOR_BEAN_NAME)) { |
111 | | - throw new NoSuchBeanDefinitionException(HANDLER_MAPPING_INTROSPECTOR_BEAN_NAME, "A Bean named " |
112 | | - + HANDLER_MAPPING_INTROSPECTOR_BEAN_NAME + " of type " |
113 | | - + HandlerMappingIntrospector.class.getName() |
114 | | - + " is required to use MvcRequestMatcher. Please ensure Spring Security & Spring MVC are configured in a shared ApplicationContext."); |
| 109 | + if (context.getBeanNamesForType(CorsConfigurationSource.class).length > 0) { |
| 110 | + CorsConfigurationSource corsConfigurationSource = context.getBean(CorsConfigurationSource.class); |
| 111 | + return new CorsFilter(corsConfigurationSource); |
115 | 112 | } |
116 | | - HandlerMappingIntrospector mappingIntrospector = context.getBean(HANDLER_MAPPING_INTROSPECTOR_BEAN_NAME, |
117 | | - HandlerMappingIntrospector.class); |
118 | | - return new CorsFilter(mappingIntrospector); |
| 113 | + throw new NoSuchBeanDefinitionException(CorsConfigurationSource.class, |
| 114 | + "Failed to find a bean that implements `CorsConfigurationSource`. Please ensure that you are using " |
| 115 | + + "`@EnableWebMvc`, are publishing a `WebMvcConfigurer`, or are publishing a `CorsConfigurationSource` bean."); |
119 | 116 | } |
120 | 117 |
|
121 | 118 | } |
|
0 commit comments