|
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