Я хочу иметь разные конфигурации WebFluxConfigurations для разных контроллеров.
Например, для 'configureHttpMessageCodecs ' Я хочу иметь разные кодеки на основе контроллера или на основе URI.
И я также хочу иметь разные реализации для bean-компонента 'nettyCustomizer', и различные bean-компоненты openApiInteractionValidator, опять же на основе контроллера/URI.
Я понимаю, что есть способ сделать это с помощью DelegatingWebFluxConfiguration, но я нахожу в Интернете очень мало документации, чтобы понять, как реализовать то, что мне нужно.
До сих пор я пытался иметь две реализации WebFluxConfigurer как таковые:
Код: Выделить всё
@Configuration
public class WorkflowWebFluxConfiguration implements WebFluxConfigurer {
@Override
public void configureHttpMessageCodecs(ServerCodecConfigurer configurer) {
// Register custom json encoder/decoders for both application/json and application/hal+json, using our own object
// mapper.
configurer.customCodecs()
.registerWithDefaultConfig(new Jackson2JsonEncoder(workflowObjectMapper, MIME_TYPE_HAL, MimeTypeUtils.APPLICATION_JSON));
configurer.customCodecs()
.registerWithDefaultConfig(new Jackson2JsonDecoder(workflowObjectMapper, MIME_TYPE_HAL, MimeTypeUtils.APPLICATION_JSON));
}
Код: Выделить всё
@Configuration
public class ActivityWebFluxConfiguration implements WebFluxConfigurer {
@Override
public void configureHttpMessageCodecs(ServerCodecConfigurer configurer) {
configurer.customCodecs().registerWithDefaultConfig(new Jackson2JsonEncoder(objectMapper, SUPPORTED_MIMETYPES));
configurer.customCodecs().registerWithDefaultConfig(new Jackson2JsonDecoder(objectMapper, SUPPORTED_MIMETYPES));
}
@Bean
public WebServerFactoryCustomizer nettyCustomizer() {
return factory -> factory
.addServerCustomizers(httpServer -> httpServer.httpRequestDecoder(spec -> spec.maxInitialLineLength(MAX_URI_LENGTH)));
}
@Bean
public OpenApiInteractionValidator openApiInteractionValidator(
@Value("classpath:apispecs/activity-v3.yaml") final Resource apiSpecification) throws IOException {
Код: Выделить всё
@Configuration
public class MainWebFluxConfiguration extends DelegatingWebFluxConfiguration {
@Autowired
public MainWebFluxConfiguration(WorkflowWebFluxConfiguration workflowWebFluxConfiguration,
ActivityWebFluxConfiguration activityWebFluxConfiguration) {
log.info("YYY main config web flux");
this.setConfigurers(List.of(workflowWebFluxConfiguration, activityWebFluxConfiguration));
}
}
Любая помощь очень ценится.
Спасибо!
Подробнее здесь: https://stackoverflow.com/questions/792 ... pring-appl
Мобильная версия