org.springframework.web.reactive.config

## Annotation Type EnableWebFlux

    @Retention(value=RUNTIME)
     @Target(value=TYPE)
     @Documented
     @Import(value=DelegatingWebFluxConfiguration.class)
    public @interface EnableWebFlux

Adding this annotation to an `@Configuration` class imports the Spring WebFlux configuration from `WebFluxConfigurationSupport` that enables use of annotated controllers and functional endpoints.

For example:

     @Configuration
     @EnableWebFlux
     @ComponentScan
     public class MyConfiguration {
     }

To customize the imported configuration, implement `WebFluxConfigurer` and one or more of its methods:

     @Configuration
     @EnableWebFlux
     @ComponentScan
     public class MyConfiguration implements WebFluxConfigurer {

         @Autowired
         private ObjectMapper objectMapper;

         @Override
         public void configureHttpMessageCodecs(ServerCodecConfigurer configurer) {
             configurer.defaultCodecs().jackson2JsonEncoder(
                 new Jackson2JsonEncoder(objectMapper)
             );
             configurer.defaultCodecs().jackson2JsonDecoder(
                 new Jackson2JsonDecoder(objectMapper)
             );
         }

         // ...
     }

Only one `@Configuration` class should have the `@EnableWebFlux` annotation in order to import the Spring WebFlux configuration. There can however be multiple `@Configuration` classes that implement `WebFluxConfigurer` that customize the provided configuration.

If `WebFluxConfigurer` does not expose some setting that needs to be configured, consider switching to an advanced mode by removing the `@EnableWebFlux` annotation and extending directly from `WebFluxConfigurationSupport` or `DelegatingWebFluxConfiguration` -- the latter allows detecting and delegating to one or more `WebFluxConfigurer` configuration classes.

Since:
  5.0
Author:
  Brian Clozel, Rossen Stoyanchev
See Also:
  `WebFluxConfigurer`, `WebFluxConfigurationSupport`, `DelegatingWebFluxConfiguration`