Я добавил следующее @Bean
в classpath для переопределения по умолчанию LocaleContextResolver
весной webflux
@Configuration
public class LocaleResolverConfiguration {
@Bean(WebHttpHandlerBuilder.LOCALE_CONTEXT_RESOLVER_BEAN_NAME)
public LocaleContextResolver localeContextResolver() {
return new LocaleContextResolver() {
@Override
public LocaleContext resolveLocaleContext(ServerWebExchange exchange) {
final String langParam = exchange.getRequest().getQueryParams().getFirst("lang");
if (langParam == null) {
return new SimpleLocaleContext(Locale.getDefault());
} else {
return new SimpleLocaleContext(Locale.forLanguageTag(langParam));
}
}
@Override
public void setLocaleContext(ServerWebExchange exchange, LocaleContext localeContext) {
throw new UnsupportedOperationException(
"Cannot change HTTP accept header - use a different locale context resolution strategy");
}
};
}
}
Но запуск приложения завершился неудачно со следующей ошибкой
The bean 'localeContextResolver', defined in class path resource [org/springframework/boot/autoconfigure/web/reactive/WebFluxAutoConfiguration$EnableWebFluxConfiguration.class], could not be registered. A bean with that name has already been defined in class path resource [com/acme/webflux/config/LocaleResolverWebFluxConfiguration.class] and overriding is disabled.
Почему webflux не отступает, когда мы уже предоставили свой LocaleContextResolver localeContextResolver()
?
Есть ли какой-то другой способ добиться того же?