Я использую Spring Boot 2.1.2.Я также использую Spring Security.Как написано здесь:
https://docs.spring.io/spring-security/site/docs/current/reference/html5/#cors
Я пытаюсь создать экземпляр Bean, corsConfigurationSource.Я не могу создать его экземпляр, потому что corsConfigurationSource должен возвращать CorsConfigurationSource, но источником является UrlBasedCorsConfigurationSource.
Я не могу привести UrlBasedCorsConfigurationSource к CorsConfigurationSource, и я не могу заставить corsConfigurationSource () вернуть его.Как мне изменить свой код, чтобы компонент возвращал объект CorsConfigurationSource?
Фрагмент кода по ссылке выше:
@Bean
CorsConfigurationSource corsConfigurationSource() {
CorsConfiguration configuration = new CorsConfiguration();
configuration.setAllowedOrigins(Arrays.asList("https://example.com"));
configuration.setAllowedMethods(Arrays.asList("GET","POST"));
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", configuration);
return source;
}
Это последняя строка из stacktrace, когда я пытался вернутьUrlBasedCorsConfigurationSource вместо CorsConfigurationSource:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'springSecurityFilterChain' defined in class path resource [org/springframework/security/config/annotation/web/configuration/WebSecurityConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [javax.servlet.Filter]: Factory method 'springSecurityFilterChain' threw exception; nested exception is org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named 'corsConfigurationSource' is expected to be of type 'org.springframework.web.cors.CorsConfigurationSource' but was actually of type 'org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource'