Как определить конфигурацию WebFluxConfiguration на основе URI/пакета/контроллера в приложении SpringJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как определить конфигурацию WebFluxConfiguration на основе URI/пакета/контроллера в приложении Spring

Сообщение Anonymous »

У меня есть приложение Spring, в котором есть разные остальные контроллеры.
Я хочу иметь разные конфигурации 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));
}

}
Но помимо этого я не понимаю, как маршрутизировать/указать/настроить каждую конфигурацию WebFluxConfiguration для обработки определенных URI или для сопоставления с конкретным контроллером или пакетом, в зависимости от того, какой способ подойдет. >
Любая помощь очень ценится.
Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/792 ... pring-appl
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»