diff --git a/docs/modules/ROOT/partials/_configprops.adoc b/docs/modules/ROOT/partials/_configprops.adoc index 3e3115a737..5b4433b044 100644 --- a/docs/modules/ROOT/partials/_configprops.adoc +++ b/docs/modules/ROOT/partials/_configprops.adoc @@ -1,7 +1,9 @@ |=== |Name | Default | Description +|spring.cloud.gateway | | |spring.cloud.gateway.default-filters | | List of filter definitions that are applied to every route. +|spring.cloud.gateway.discovery.locator | | |spring.cloud.gateway.discovery.locator.enabled | `+++false+++` | Flag that enables DiscoveryClient gateway integration. |spring.cloud.gateway.discovery.locator.filters | | |spring.cloud.gateway.discovery.locator.include-expression | `+++true+++` | SpEL expression that will evaluate whether to include a service in gateway integration or not, defaults to: true. @@ -19,7 +21,9 @@ |spring.cloud.gateway.filter.fallback-headers.enabled | `+++true+++` | Enables the fallback-headers filter. |spring.cloud.gateway.filter.hystrix.enabled | `+++true+++` | Enables the hystrix filter. |spring.cloud.gateway.filter.json-to-grpc.enabled | `+++true+++` | Enables the JSON to gRPC filter. +|spring.cloud.gateway.filter.local-response-cache | | |spring.cloud.gateway.filter.local-response-cache.enabled | `+++false+++` | Enables the local-response-cache filter. +|spring.cloud.gateway.filter.local-response-cache.request | | |spring.cloud.gateway.filter.local-response-cache.request.no-cache-strategy | `+++skip-update-cache-entry+++` | |spring.cloud.gateway.filter.local-response-cache.size | | Maximum size of the cache to evict entries for this route (in KB, MB and GB). |spring.cloud.gateway.filter.local-response-cache.time-to-live | `+++5m+++` | Time to expire a cache entry (expressed in s for seconds, m for minutes, and h for hours). @@ -29,6 +33,7 @@ |spring.cloud.gateway.filter.prefix-path.enabled | `+++true+++` | Enables the prefix-path filter. |spring.cloud.gateway.filter.preserve-host-header.enabled | `+++true+++` | Enables the preserve-host-header filter. |spring.cloud.gateway.filter.redirect-to.enabled | `+++true+++` | Enables the redirect-to filter. +|spring.cloud.gateway.filter.remove-hop-by-hop | | |spring.cloud.gateway.filter.remove-hop-by-hop.headers | | |spring.cloud.gateway.filter.remove-hop-by-hop.order | `+++0+++` | |spring.cloud.gateway.filter.remove-request-header.enabled | `+++true+++` | Enables the remove-request-header filter. @@ -36,6 +41,7 @@ |spring.cloud.gateway.filter.remove-response-header.enabled | `+++true+++` | Enables the remove-response-header filter. |spring.cloud.gateway.filter.request-header-size.enabled | `+++true+++` | Enables the request-header-size filter. |spring.cloud.gateway.filter.request-header-to-request-uri.enabled | `+++true+++` | Enables the request-header-to-request-uri filter. +|spring.cloud.gateway.filter.request-rate-limiter | | |spring.cloud.gateway.filter.request-rate-limiter.default-key-resolver | | |spring.cloud.gateway.filter.request-rate-limiter.default-rate-limiter | | |spring.cloud.gateway.filter.request-rate-limiter.enabled | `+++true+++` | Enables the request-rate-limiter filter. @@ -47,6 +53,7 @@ |spring.cloud.gateway.filter.rewrite-request-parameter.enabled | `+++true+++` | Enables the rewrite-request-parameter filter. |spring.cloud.gateway.filter.rewrite-response-header.enabled | `+++true+++` | Enables the rewrite-response-header filter. |spring.cloud.gateway.filter.save-session.enabled | `+++true+++` | Enables the save-session filter. +|spring.cloud.gateway.filter.secure-headers | | |spring.cloud.gateway.filter.secure-headers.content-security-policy | `+++default-src 'self' https:; font-src 'self' https: data:; img-src 'self' https: data:; object-src 'none'; script-src https:; style-src 'self' https: 'unsafe-inline'+++` | |spring.cloud.gateway.filter.secure-headers.content-type-options | `+++nosniff+++` | |spring.cloud.gateway.filter.secure-headers.default-headers | | @@ -80,13 +87,16 @@ |spring.cloud.gateway.global-filter.remove-cached-body.enabled | `+++true+++` | Enables the remove-cached-body global filter. |spring.cloud.gateway.global-filter.route-to-request-url.enabled | `+++true+++` | Enables the route-to-request-url global filter. |spring.cloud.gateway.global-filter.websocket-routing.enabled | `+++true+++` | Enables the websocket-routing global filter. +|spring.cloud.gateway.globalcors | | |spring.cloud.gateway.globalcors.add-to-simple-url-handler-mapping | `+++false+++` | If global CORS config should be added to the URL handler. |spring.cloud.gateway.globalcors.cors-configurations | | |spring.cloud.gateway.handler-mapping.order | `+++1+++` | The order of RoutePredicateHandlerMapping. +|spring.cloud.gateway.httpclient | | |spring.cloud.gateway.httpclient.compression | `+++false+++` | Enables compression for Netty HttpClient. |spring.cloud.gateway.httpclient.connect-timeout | | The connect timeout in millis, the default is 30s. |spring.cloud.gateway.httpclient.max-header-size | | The max response header size. |spring.cloud.gateway.httpclient.max-initial-line-length | | The max initial line length. +|spring.cloud.gateway.httpclient.pool | | |spring.cloud.gateway.httpclient.pool.acquire-timeout | | Only for type FIXED, the maximum time in millis to wait for acquiring. |spring.cloud.gateway.httpclient.pool.eviction-interval | `+++0+++` | Perform regular eviction checks in the background at a specified interval. Disabled by default ({@link Duration#ZERO}) |spring.cloud.gateway.httpclient.pool.leasing-strategy | `+++fifo+++` | Configures the leasing strategy for the pool (fifo or lifo), defaults to FIFO which is Netty's default. @@ -96,6 +106,7 @@ |spring.cloud.gateway.httpclient.pool.metrics | `+++false+++` | Enables channel pools metrics to be collected and registered in Micrometer. Disabled by default. |spring.cloud.gateway.httpclient.pool.name | `+++proxy+++` | The channel pool map name, defaults to proxy. |spring.cloud.gateway.httpclient.pool.type | `+++elastic+++` | Type of pool for HttpClient to use (elastic, fixed or disabled). +|spring.cloud.gateway.httpclient.proxy | | |spring.cloud.gateway.httpclient.proxy.host | | Hostname for proxy configuration of Netty HttpClient. |spring.cloud.gateway.httpclient.proxy.non-proxy-hosts-pattern | | Regular expression (Java) for a configured list of hosts. that should be reached directly, bypassing the proxy |spring.cloud.gateway.httpclient.proxy.password | | Password for proxy configuration of Netty HttpClient. @@ -103,6 +114,7 @@ |spring.cloud.gateway.httpclient.proxy.type | `+++http+++` | proxyType for proxy configuration of Netty HttpClient (http, socks4 or socks5). |spring.cloud.gateway.httpclient.proxy.username | | Username for proxy configuration of Netty HttpClient. |spring.cloud.gateway.httpclient.response-timeout | | The response timeout. +|spring.cloud.gateway.httpclient.ssl | | |spring.cloud.gateway.httpclient.ssl.close-notify-flush-timeout | `+++3000ms+++` | SSL close_notify flush timeout. Default to 3000 ms. |spring.cloud.gateway.httpclient.ssl.close-notify-read-timeout | `+++0+++` | SSL close_notify read timeout. Default to 0 ms. |spring.cloud.gateway.httpclient.ssl.handshake-timeout | `+++10000ms+++` | SSL handshake timeout. Default to 10000 ms @@ -114,11 +126,14 @@ |spring.cloud.gateway.httpclient.ssl.ssl-bundle | | The name of the SSL bundle to use. |spring.cloud.gateway.httpclient.ssl.trusted-x509-certificates | | Trusted certificates for verifying the remote endpoint's certificate. |spring.cloud.gateway.httpclient.ssl.use-insecure-trust-manager | `+++false+++` | Installs the netty InsecureTrustManagerFactory. This is insecure and not suitable for production. +|spring.cloud.gateway.httpclient.websocket | | |spring.cloud.gateway.httpclient.websocket.max-frame-payload-length | | Max frame payload length. |spring.cloud.gateway.httpclient.websocket.proxy-ping | `+++true+++` | Proxy ping frames to downstream services, defaults to true. |spring.cloud.gateway.httpclient.wiretap | `+++false+++` | Enables wiretap debugging for Netty HttpClient. |spring.cloud.gateway.httpserver.wiretap | `+++false+++` | Enables wiretap debugging for Netty HttpServer. +|spring.cloud.gateway.loadbalancer | | |spring.cloud.gateway.loadbalancer.use404 | `+++false+++` | +|spring.cloud.gateway.metrics | | |spring.cloud.gateway.metrics.enabled | `+++false+++` | Enables the collection of metrics data. |spring.cloud.gateway.metrics.prefix | `+++spring.cloud.gateway+++` | The prefix of all metrics emitted by gateway. |spring.cloud.gateway.metrics.tags | | Tags map that added to metrics. @@ -151,6 +166,7 @@ |spring.cloud.gateway.mvc.x-forwarded-request-headers-filter.proto-append | `+++true+++` | If appending X-Forwarded-Proto as a list is enabled. |spring.cloud.gateway.mvc.x-forwarded-request-headers-filter.proto-enabled | `+++true+++` | If X-Forwarded-Proto is enabled. |spring.cloud.gateway.observability.enabled | `+++true+++` | If Micrometer Observability support should be turned on. +|spring.cloud.gateway.oldval | | oldval doc. |spring.cloud.gateway.predicate.after.enabled | `+++true+++` | Enables the after predicate. |spring.cloud.gateway.predicate.before.enabled | `+++true+++` | Enables the before predicate. |spring.cloud.gateway.predicate.between.enabled | `+++true+++` | Enables the between predicate. @@ -166,6 +182,7 @@ |spring.cloud.gateway.predicate.remote-addr.enabled | `+++true+++` | Enables the remote-addr predicate. |spring.cloud.gateway.predicate.weight.enabled | `+++true+++` | Enables the weight predicate. |spring.cloud.gateway.predicate.xforwarded-remote-addr.enabled | `+++true+++` | Enables the xforwarded-remote-addr predicate. +|spring.cloud.gateway.redis-rate-limiter | | |spring.cloud.gateway.redis-rate-limiter.burst-capacity-header | `+++X-RateLimit-Burst-Capacity+++` | The name of the header that returns the burst capacity configuration. |spring.cloud.gateway.redis-rate-limiter.config | | |spring.cloud.gateway.redis-rate-limiter.include-headers | `+++true+++` | Whether or not to include headers containing rate limiter information, defaults to true. @@ -177,6 +194,168 @@ |spring.cloud.gateway.route-filter-cache-enabled | `+++false+++` | Enables the route filter cache, defaults to false. |spring.cloud.gateway.route-refresh-listener.enabled | `+++true+++` | If RouteRefreshListener should be turned on. |spring.cloud.gateway.routes | | List of Routes. +|spring.cloud.gateway.server.webflux.default-filters | | List of filter definitions that are applied to every route. +|spring.cloud.gateway.server.webflux.discovery.locator.enabled | `+++false+++` | Flag that enables DiscoveryClient gateway integration. +|spring.cloud.gateway.server.webflux.discovery.locator.filters | | +|spring.cloud.gateway.server.webflux.discovery.locator.include-expression | `+++true+++` | SpEL expression that will evaluate whether to include a service in gateway integration or not, defaults to: true. +|spring.cloud.gateway.server.webflux.discovery.locator.lower-case-service-id | `+++false+++` | Option to lower case serviceId in predicates and filters, defaults to false. Useful with eureka when it automatically uppercases serviceId. so MYSERIVCE, would match /myservice/** +|spring.cloud.gateway.server.webflux.discovery.locator.predicates | | +|spring.cloud.gateway.server.webflux.discovery.locator.route-id-prefix | | The prefix for the routeId, defaults to discoveryClient.getClass().getSimpleName() + "_". Service Id will be appended to create the routeId. +|spring.cloud.gateway.server.webflux.discovery.locator.url-expression | `+++'lb://'+serviceId+++` | SpEL expression that create the uri for each route, defaults to: 'lb://'+serviceId. +|spring.cloud.gateway.server.webflux.enabled | `+++true+++` | Enables gateway functionality. +|spring.cloud.gateway.server.webflux.fail-on-route-definition-error | `+++true+++` | Option to fail on route definition errors, defaults to true. Otherwise, a warning is logged. +|spring.cloud.gateway.server.webflux.filter.add-request-header.enabled | `+++true+++` | Enables the add-request-header filter. +|spring.cloud.gateway.server.webflux.filter.add-request-parameter.enabled | `+++true+++` | Enables the add-request-parameter filter. +|spring.cloud.gateway.server.webflux.filter.add-response-header.enabled | `+++true+++` | Enables the add-response-header filter. +|spring.cloud.gateway.server.webflux.filter.circuit-breaker.enabled | `+++true+++` | Enables the circuit-breaker filter. +|spring.cloud.gateway.server.webflux.filter.dedupe-response-header.enabled | `+++true+++` | Enables the dedupe-response-header filter. +|spring.cloud.gateway.server.webflux.filter.fallback-headers.enabled | `+++true+++` | Enables the fallback-headers filter. +|spring.cloud.gateway.server.webflux.filter.hystrix.enabled | `+++true+++` | Enables the hystrix filter. +|spring.cloud.gateway.server.webflux.filter.json-to-grpc.enabled | `+++true+++` | Enables the JSON to gRPC filter. +|spring.cloud.gateway.server.webflux.filter.local-response-cache.enabled | `+++false+++` | Enables the local-response-cache filter. +|spring.cloud.gateway.server.webflux.filter.local-response-cache.request.no-cache-strategy | `+++skip-update-cache-entry+++` | +|spring.cloud.gateway.server.webflux.filter.local-response-cache.size | | Maximum size of the cache to evict entries for this route (in KB, MB and GB). +|spring.cloud.gateway.server.webflux.filter.local-response-cache.time-to-live | `+++5m+++` | Time to expire a cache entry (expressed in s for seconds, m for minutes, and h for hours). +|spring.cloud.gateway.server.webflux.filter.map-request-header.enabled | `+++true+++` | Enables the map-request-header filter. +|spring.cloud.gateway.server.webflux.filter.modify-request-body.enabled | `+++true+++` | Enables the modify-request-body filter. +|spring.cloud.gateway.server.webflux.filter.modify-response-body.enabled | `+++true+++` | Enables the modify-response-body filter. +|spring.cloud.gateway.server.webflux.filter.prefix-path.enabled | `+++true+++` | Enables the prefix-path filter. +|spring.cloud.gateway.server.webflux.filter.preserve-host-header.enabled | `+++true+++` | Enables the preserve-host-header filter. +|spring.cloud.gateway.server.webflux.filter.redirect-to.enabled | `+++true+++` | Enables the redirect-to filter. +|spring.cloud.gateway.server.webflux.filter.remove-hop-by-hop.headers | | +|spring.cloud.gateway.server.webflux.filter.remove-hop-by-hop.order | `+++0+++` | +|spring.cloud.gateway.server.webflux.filter.remove-request-header.enabled | `+++true+++` | Enables the remove-request-header filter. +|spring.cloud.gateway.server.webflux.filter.remove-request-parameter.enabled | `+++true+++` | Enables the remove-request-parameter filter. +|spring.cloud.gateway.server.webflux.filter.remove-response-header.enabled | `+++true+++` | Enables the remove-response-header filter. +|spring.cloud.gateway.server.webflux.filter.request-header-size.enabled | `+++true+++` | Enables the request-header-size filter. +|spring.cloud.gateway.server.webflux.filter.request-header-to-request-uri.enabled | `+++true+++` | Enables the request-header-to-request-uri filter. +|spring.cloud.gateway.server.webflux.filter.request-rate-limiter.default-key-resolver | | +|spring.cloud.gateway.server.webflux.filter.request-rate-limiter.default-rate-limiter | | +|spring.cloud.gateway.server.webflux.filter.request-rate-limiter.enabled | `+++true+++` | Enables the request-rate-limiter filter. +|spring.cloud.gateway.server.webflux.filter.request-size.enabled | `+++true+++` | Enables the request-size filter. +|spring.cloud.gateway.server.webflux.filter.retry.enabled | `+++true+++` | Enables the retry filter. +|spring.cloud.gateway.server.webflux.filter.rewrite-location-response-header.enabled | `+++true+++` | Enables the rewrite-location-response-header filter. +|spring.cloud.gateway.server.webflux.filter.rewrite-location.enabled | `+++true+++` | Enables the rewrite-location filter. +|spring.cloud.gateway.server.webflux.filter.rewrite-path.enabled | `+++true+++` | Enables the rewrite-path filter. +|spring.cloud.gateway.server.webflux.filter.rewrite-request-parameter.enabled | `+++true+++` | Enables the rewrite-request-parameter filter. +|spring.cloud.gateway.server.webflux.filter.rewrite-response-header.enabled | `+++true+++` | Enables the rewrite-response-header filter. +|spring.cloud.gateway.server.webflux.filter.save-session.enabled | `+++true+++` | Enables the save-session filter. +|spring.cloud.gateway.server.webflux.filter.secure-headers.content-security-policy | `+++default-src 'self' https:; font-src 'self' https: data:; img-src 'self' https: data:; object-src 'none'; script-src https:; style-src 'self' https: 'unsafe-inline'+++` | +|spring.cloud.gateway.server.webflux.filter.secure-headers.content-type-options | `+++nosniff+++` | +|spring.cloud.gateway.server.webflux.filter.secure-headers.default-headers | | +|spring.cloud.gateway.server.webflux.filter.secure-headers.disable | | +|spring.cloud.gateway.server.webflux.filter.secure-headers.disabled-headers | | +|spring.cloud.gateway.server.webflux.filter.secure-headers.download-options | `+++noopen+++` | +|spring.cloud.gateway.server.webflux.filter.secure-headers.enabled | `+++true+++` | Enables the secure-headers filter. +|spring.cloud.gateway.server.webflux.filter.secure-headers.enabled-headers | | +|spring.cloud.gateway.server.webflux.filter.secure-headers.frame-options | `+++DENY+++` | +|spring.cloud.gateway.server.webflux.filter.secure-headers.permissions-policy | `+++accelerometer=(), ambient-light-sensor=(), autoplay=(), battery=(), camera=(), cross-origin-isolated=(), display-capture=(), document-domain=(), encrypted-media=(), execution-while-not-rendered=(), execution-while-out-of-viewport=(), fullscreen=(), geolocation=(), gyroscope=(), keyboard-map=(), magnetometer=(), microphone=(), midi=(), navigation-override=(), payment=(), picture-in-picture=(), publickey-credentials-get=(), screen-wake-lock=(), sync-xhr=(), usb=(), web-share=(), xr-spatial-tracking=()+++` | +|spring.cloud.gateway.server.webflux.filter.secure-headers.permitted-cross-domain-policies | `+++none+++` | +|spring.cloud.gateway.server.webflux.filter.secure-headers.referrer-policy | `+++no-referrer+++` | +|spring.cloud.gateway.server.webflux.filter.secure-headers.strict-transport-security | `+++max-age=631138519+++` | +|spring.cloud.gateway.server.webflux.filter.secure-headers.xss-protection-header | `+++1 ; mode=block+++` | +|spring.cloud.gateway.server.webflux.filter.set-path.enabled | `+++true+++` | Enables the set-path filter. +|spring.cloud.gateway.server.webflux.filter.set-request-header.enabled | `+++true+++` | Enables the set-request-header filter. +|spring.cloud.gateway.server.webflux.filter.set-request-host-header.enabled | `+++true+++` | Enables the set-request-host-header filter. +|spring.cloud.gateway.server.webflux.filter.set-response-header.enabled | `+++true+++` | Enables the set-response-header filter. +|spring.cloud.gateway.server.webflux.filter.set-status.enabled | `+++true+++` | Enables the set-status filter. +|spring.cloud.gateway.server.webflux.filter.strip-prefix.enabled | `+++true+++` | Enables the strip-prefix filter. +|spring.cloud.gateway.server.webflux.forwarded.by.enabled | `+++false+++` | Enables the Forwarded: by header part. +|spring.cloud.gateway.server.webflux.forwarded.enabled | `+++true+++` | Enables the ForwardedHeadersFilter. +|spring.cloud.gateway.server.webflux.global-filter.adapt-cached-body.enabled | `+++true+++` | Enables the adapt-cached-body global filter. +|spring.cloud.gateway.server.webflux.global-filter.forward-path.enabled | `+++true+++` | Enables the forward-path global filter. +|spring.cloud.gateway.server.webflux.global-filter.forward-routing.enabled | `+++true+++` | Enables the forward-routing global filter. +|spring.cloud.gateway.server.webflux.global-filter.load-balancer-client.enabled | `+++true+++` | Enables the load-balancer-client global filter. +|spring.cloud.gateway.server.webflux.global-filter.local-response-cache.enabled | `+++true+++` | Enables the local-response-cache filter for all routes, it allows to add a specific configuration at route level using LocalResponseCache filter. +|spring.cloud.gateway.server.webflux.global-filter.netty-routing.enabled | `+++true+++` | Enables the netty-routing global filter. +|spring.cloud.gateway.server.webflux.global-filter.netty-write-response.enabled | `+++true+++` | Enables the netty-write-response global filter. +|spring.cloud.gateway.server.webflux.global-filter.reactive-load-balancer-client.enabled | `+++true+++` | Enables the reactive-load-balancer-client global filter. +|spring.cloud.gateway.server.webflux.global-filter.remove-cached-body.enabled | `+++true+++` | Enables the remove-cached-body global filter. +|spring.cloud.gateway.server.webflux.global-filter.route-to-request-url.enabled | `+++true+++` | Enables the route-to-request-url global filter. +|spring.cloud.gateway.server.webflux.global-filter.websocket-routing.enabled | `+++true+++` | Enables the websocket-routing global filter. +|spring.cloud.gateway.server.webflux.globalcors.add-to-simple-url-handler-mapping | `+++false+++` | If global CORS config should be added to the URL handler. +|spring.cloud.gateway.server.webflux.globalcors.cors-configurations | | +|spring.cloud.gateway.server.webflux.handler-mapping.order | `+++1+++` | The order of RoutePredicateHandlerMapping. +|spring.cloud.gateway.server.webflux.httpclient.compression | `+++false+++` | Enables compression for Netty HttpClient. +|spring.cloud.gateway.server.webflux.httpclient.connect-timeout | | The connect timeout in millis, the default is 30s. +|spring.cloud.gateway.server.webflux.httpclient.max-header-size | | The max response header size. +|spring.cloud.gateway.server.webflux.httpclient.max-initial-line-length | | The max initial line length. +|spring.cloud.gateway.server.webflux.httpclient.pool.acquire-timeout | | Only for type FIXED, the maximum time in millis to wait for acquiring. +|spring.cloud.gateway.server.webflux.httpclient.pool.eviction-interval | `+++0+++` | Perform regular eviction checks in the background at a specified interval. Disabled by default ({@link Duration#ZERO}) +|spring.cloud.gateway.server.webflux.httpclient.pool.leasing-strategy | `+++fifo+++` | Configures the leasing strategy for the pool (fifo or lifo), defaults to FIFO which is Netty's default. +|spring.cloud.gateway.server.webflux.httpclient.pool.max-connections | | Only for type FIXED, the maximum number of connections before starting pending acquisition on existing ones. +|spring.cloud.gateway.server.webflux.httpclient.pool.max-idle-time | | Time in millis after which the channel will be closed. If NULL, there is no max idle time. +|spring.cloud.gateway.server.webflux.httpclient.pool.max-life-time | | Duration after which the channel will be closed. If NULL, there is no max life time. +|spring.cloud.gateway.server.webflux.httpclient.pool.metrics | `+++false+++` | Enables channel pools metrics to be collected and registered in Micrometer. Disabled by default. +|spring.cloud.gateway.server.webflux.httpclient.pool.name | `+++proxy+++` | The channel pool map name, defaults to proxy. +|spring.cloud.gateway.server.webflux.httpclient.pool.type | `+++elastic+++` | Type of pool for HttpClient to use (elastic, fixed or disabled). +|spring.cloud.gateway.server.webflux.httpclient.proxy.host | | Hostname for proxy configuration of Netty HttpClient. +|spring.cloud.gateway.server.webflux.httpclient.proxy.non-proxy-hosts-pattern | | Regular expression (Java) for a configured list of hosts. that should be reached directly, bypassing the proxy +|spring.cloud.gateway.server.webflux.httpclient.proxy.password | | Password for proxy configuration of Netty HttpClient. +|spring.cloud.gateway.server.webflux.httpclient.proxy.port | | Port for proxy configuration of Netty HttpClient. +|spring.cloud.gateway.server.webflux.httpclient.proxy.type | `+++http+++` | proxyType for proxy configuration of Netty HttpClient (http, socks4 or socks5). +|spring.cloud.gateway.server.webflux.httpclient.proxy.username | | Username for proxy configuration of Netty HttpClient. +|spring.cloud.gateway.server.webflux.httpclient.response-timeout | | The response timeout. +|spring.cloud.gateway.server.webflux.httpclient.ssl.close-notify-flush-timeout | `+++3000ms+++` | SSL close_notify flush timeout. Default to 3000 ms. +|spring.cloud.gateway.server.webflux.httpclient.ssl.close-notify-read-timeout | `+++0+++` | SSL close_notify read timeout. Default to 0 ms. +|spring.cloud.gateway.server.webflux.httpclient.ssl.handshake-timeout | `+++10000ms+++` | SSL handshake timeout. Default to 10000 ms +|spring.cloud.gateway.server.webflux.httpclient.ssl.key-password | | Key password, default is same as keyStorePassword. +|spring.cloud.gateway.server.webflux.httpclient.ssl.key-store | | Keystore path for Netty HttpClient. +|spring.cloud.gateway.server.webflux.httpclient.ssl.key-store-password | | Keystore password. +|spring.cloud.gateway.server.webflux.httpclient.ssl.key-store-provider | | Keystore provider for Netty HttpClient, optional field. +|spring.cloud.gateway.server.webflux.httpclient.ssl.key-store-type | `+++JKS+++` | Keystore type for Netty HttpClient, default is JKS. +|spring.cloud.gateway.server.webflux.httpclient.ssl.ssl-bundle | | The name of the SSL bundle to use. +|spring.cloud.gateway.server.webflux.httpclient.ssl.trusted-x509-certificates | | Trusted certificates for verifying the remote endpoint's certificate. +|spring.cloud.gateway.server.webflux.httpclient.ssl.use-insecure-trust-manager | `+++false+++` | Installs the netty InsecureTrustManagerFactory. This is insecure and not suitable for production. +|spring.cloud.gateway.server.webflux.httpclient.websocket.max-frame-payload-length | | Max frame payload length. +|spring.cloud.gateway.server.webflux.httpclient.websocket.proxy-ping | `+++true+++` | Proxy ping frames to downstream services, defaults to true. +|spring.cloud.gateway.server.webflux.httpclient.wiretap | `+++false+++` | Enables wiretap debugging for Netty HttpClient. +|spring.cloud.gateway.server.webflux.httpserver.wiretap | `+++false+++` | Enables wiretap debugging for Netty HttpServer. +|spring.cloud.gateway.server.webflux.loadbalancer.use404 | `+++false+++` | +|spring.cloud.gateway.server.webflux.metrics.enabled | `+++false+++` | Enables the collection of metrics data. +|spring.cloud.gateway.server.webflux.metrics.prefix | `+++spring.cloud.gateway+++` | The prefix of all metrics emitted by gateway. +|spring.cloud.gateway.server.webflux.metrics.tags | | Tags map that added to metrics. +|spring.cloud.gateway.server.webflux.observability.enabled | `+++true+++` | If Micrometer Observability support should be turned on. +|spring.cloud.gateway.server.webflux.predicate.after.enabled | `+++true+++` | Enables the after predicate. +|spring.cloud.gateway.server.webflux.predicate.before.enabled | `+++true+++` | Enables the before predicate. +|spring.cloud.gateway.server.webflux.predicate.between.enabled | `+++true+++` | Enables the between predicate. +|spring.cloud.gateway.server.webflux.predicate.cloud-foundry-route-service.enabled | `+++true+++` | Enables the cloud-foundry-route-service predicate. +|spring.cloud.gateway.server.webflux.predicate.cookie.enabled | `+++true+++` | Enables the cookie predicate. +|spring.cloud.gateway.server.webflux.predicate.header.enabled | `+++true+++` | Enables the header predicate. +|spring.cloud.gateway.server.webflux.predicate.host.enabled | `+++true+++` | Enables the host predicate. +|spring.cloud.gateway.server.webflux.predicate.host.include-port | `+++true+++` | Include the port in matching the host name. +|spring.cloud.gateway.server.webflux.predicate.method.enabled | `+++true+++` | Enables the method predicate. +|spring.cloud.gateway.server.webflux.predicate.path.enabled | `+++true+++` | Enables the path predicate. +|spring.cloud.gateway.server.webflux.predicate.query.enabled | `+++true+++` | Enables the query predicate. +|spring.cloud.gateway.server.webflux.predicate.read-body.enabled | `+++true+++` | Enables the read-body predicate. +|spring.cloud.gateway.server.webflux.predicate.remote-addr.enabled | `+++true+++` | Enables the remote-addr predicate. +|spring.cloud.gateway.server.webflux.predicate.weight.enabled | `+++true+++` | Enables the weight predicate. +|spring.cloud.gateway.server.webflux.predicate.xforwarded-remote-addr.enabled | `+++true+++` | Enables the xforwarded-remote-addr predicate. +|spring.cloud.gateway.server.webflux.redis-rate-limiter.burst-capacity-header | `+++X-RateLimit-Burst-Capacity+++` | The name of the header that returns the burst capacity configuration. +|spring.cloud.gateway.server.webflux.redis-rate-limiter.config | | +|spring.cloud.gateway.server.webflux.redis-rate-limiter.include-headers | `+++true+++` | Whether or not to include headers containing rate limiter information, defaults to true. +|spring.cloud.gateway.server.webflux.redis-rate-limiter.remaining-header | `+++X-RateLimit-Remaining+++` | The name of the header that returns number of remaining requests during the current second. +|spring.cloud.gateway.server.webflux.redis-rate-limiter.replenish-rate-header | `+++X-RateLimit-Replenish-Rate+++` | The name of the header that returns the replenish rate configuration. +|spring.cloud.gateway.server.webflux.redis-rate-limiter.requested-tokens-header | `+++X-RateLimit-Requested-Tokens+++` | The name of the header that returns the requested tokens configuration. +|spring.cloud.gateway.server.webflux.redis-route-definition-repository.enabled | `+++true+++` | If RedisRouteDefinitionRepository should be enabled. +|spring.cloud.gateway.server.webflux.restrictive-property-accessor.enabled | `+++true+++` | Restricts method and property access in SpEL. +|spring.cloud.gateway.server.webflux.route-filter-cache-enabled | `+++false+++` | Enables the route filter cache, defaults to false. +|spring.cloud.gateway.server.webflux.route-refresh-listener.enabled | `+++true+++` | If RouteRefreshListener should be turned on. +|spring.cloud.gateway.server.webflux.routes | | List of Routes. +|spring.cloud.gateway.server.webflux.set-status.original-status-header-name | | The name of the header which contains http code of the proxied request. +|spring.cloud.gateway.server.webflux.streaming-media-types | | +|spring.cloud.gateway.server.webflux.x-forwarded.enabled | `+++true+++` | If the XForwardedHeadersFilter is enabled. +|spring.cloud.gateway.server.webflux.x-forwarded.for-append | `+++true+++` | If appending X-Forwarded-For as a list is enabled. +|spring.cloud.gateway.server.webflux.x-forwarded.for-enabled | `+++true+++` | If X-Forwarded-For is enabled. +|spring.cloud.gateway.server.webflux.x-forwarded.host-append | `+++true+++` | If appending X-Forwarded-Host as a list is enabled. +|spring.cloud.gateway.server.webflux.x-forwarded.host-enabled | `+++true+++` | If X-Forwarded-Host is enabled. +|spring.cloud.gateway.server.webflux.x-forwarded.order | `+++0+++` | The order of the XForwardedHeadersFilter. +|spring.cloud.gateway.server.webflux.x-forwarded.port-append | `+++true+++` | If appending X-Forwarded-Port as a list is enabled. +|spring.cloud.gateway.server.webflux.x-forwarded.port-enabled | `+++true+++` | If X-Forwarded-Port is enabled. +|spring.cloud.gateway.server.webflux.x-forwarded.prefix-append | `+++true+++` | If appending X-Forwarded-Prefix as a list is enabled. +|spring.cloud.gateway.server.webflux.x-forwarded.prefix-enabled | `+++true+++` | If X-Forwarded-Prefix is enabled. +|spring.cloud.gateway.server.webflux.x-forwarded.proto-append | `+++true+++` | If appending X-Forwarded-Proto as a list is enabled. +|spring.cloud.gateway.server.webflux.x-forwarded.proto-enabled | `+++true+++` | If X-Forwarded-Proto is enabled. |spring.cloud.gateway.server.webmvc.form-filter.enabled | `+++true+++` | Enables the form-filter. |spring.cloud.gateway.server.webmvc.forwarded-request-headers-filter.enabled | `+++true+++` | Enables the forwarded-request-headers-filter. |spring.cloud.gateway.server.webmvc.http-client.connect-timeout | | The HttpClient connect timeout. @@ -205,8 +384,10 @@ |spring.cloud.gateway.server.webmvc.x-forwarded-request-headers-filter.prefix-enabled | `+++true+++` | If X-Forwarded-Prefix is enabled. |spring.cloud.gateway.server.webmvc.x-forwarded-request-headers-filter.proto-append | `+++true+++` | If appending X-Forwarded-Proto as a list is enabled. |spring.cloud.gateway.server.webmvc.x-forwarded-request-headers-filter.proto-enabled | `+++true+++` | If X-Forwarded-Proto is enabled. +|spring.cloud.gateway.set-status | | |spring.cloud.gateway.set-status.original-status-header-name | | The name of the header which contains http code of the proxied request. |spring.cloud.gateway.streaming-media-types | | +|spring.cloud.gateway.x-forwarded | | |spring.cloud.gateway.x-forwarded.enabled | `+++true+++` | If the XForwardedHeadersFilter is enabled. |spring.cloud.gateway.x-forwarded.for-append | `+++true+++` | If appending X-Forwarded-For as a list is enabled. |spring.cloud.gateway.x-forwarded.for-enabled | `+++true+++` | If X-Forwarded-For is enabled. diff --git a/spring-cloud-gateway-integration-tests/grpc/src/test/resources/application.yml b/spring-cloud-gateway-integration-tests/grpc/src/test/resources/application.yml index 97c1b95094..1edaa78efa 100644 --- a/spring-cloud-gateway-integration-tests/grpc/src/test/resources/application.yml +++ b/spring-cloud-gateway-integration-tests/grpc/src/test/resources/application.yml @@ -20,7 +20,7 @@ management: spring: cloud: - gateway: + gateway.server.webflux: httpserver: wiretap: true httpclient: diff --git a/spring-cloud-gateway-integration-tests/http2/src/main/resources/application.yml b/spring-cloud-gateway-integration-tests/http2/src/main/resources/application.yml index 8438b1d581..4db549c341 100644 --- a/spring-cloud-gateway-integration-tests/http2/src/main/resources/application.yml +++ b/spring-cloud-gateway-integration-tests/http2/src/main/resources/application.yml @@ -13,7 +13,7 @@ server: spring: cloud: - gateway: + gateway.server.webflux: # httpserver: # wiretap: true httpclient: diff --git a/spring-cloud-gateway-integration-tests/http2/src/test/resources/application-nossl.yml b/spring-cloud-gateway-integration-tests/http2/src/test/resources/application-nossl.yml index 6143bf9dd2..4b2cf96a49 100644 --- a/spring-cloud-gateway-integration-tests/http2/src/test/resources/application-nossl.yml +++ b/spring-cloud-gateway-integration-tests/http2/src/test/resources/application-nossl.yml @@ -9,5 +9,5 @@ server: spring: cloud: - gateway: + gateway.server.webflux: enabled: false \ No newline at end of file diff --git a/spring-cloud-gateway-integration-tests/mvc-failure-analyzer/src/test/java/org/springframework/cloud/gateway/sample/MvcFailureAnalyzerApplicationTests.java b/spring-cloud-gateway-integration-tests/mvc-failure-analyzer/src/test/java/org/springframework/cloud/gateway/sample/MvcFailureAnalyzerApplicationTests.java index ea70271577..f9a33ba3ff 100644 --- a/spring-cloud-gateway-integration-tests/mvc-failure-analyzer/src/test/java/org/springframework/cloud/gateway/sample/MvcFailureAnalyzerApplicationTests.java +++ b/spring-cloud-gateway-integration-tests/mvc-failure-analyzer/src/test/java/org/springframework/cloud/gateway/sample/MvcFailureAnalyzerApplicationTests.java @@ -48,7 +48,7 @@ public void exceptionThrown(CapturedOutput output) { @Test public void exceptionNotThrownWhenDisabled(CapturedOutput output) { assertThatCode(() -> new SpringApplication(MvcFailureAnalyzerApplication.class) - .run("--spring.cloud.gateway.enabled=false", "--server.port=0")).doesNotThrowAnyException(); + .run("--spring.cloud.gateway.server.webflux.enabled=false", "--server.port=0")).doesNotThrowAnyException(); assertThat(output).doesNotContain(MvcFoundOnClasspathFailureAnalyzer.MESSAGE, MvcFoundOnClasspathFailureAnalyzer.ACTION); } diff --git a/spring-cloud-gateway-sample/src/main/resources/application-secureheaders.yml b/spring-cloud-gateway-sample/src/main/resources/application-secureheaders.yml index ddae382f5b..c6952c89e2 100644 --- a/spring-cloud-gateway-sample/src/main/resources/application-secureheaders.yml +++ b/spring-cloud-gateway-sample/src/main/resources/application-secureheaders.yml @@ -7,7 +7,7 @@ test: spring: cloud: - gateway: + gateway.server.webflux: filter: default-filters: #- PrefixPath=/httpbin diff --git a/spring-cloud-gateway-sample/src/main/resources/application.yml b/spring-cloud-gateway-sample/src/main/resources/application.yml index 4cf839df80..103391123b 100644 --- a/spring-cloud-gateway-sample/src/main/resources/application.yml +++ b/spring-cloud-gateway-sample/src/main/resources/application.yml @@ -9,7 +9,7 @@ spring: jmx: enabled: false cloud: - gateway: + gateway.server.webflux: default-filters: - PrefixPath=/httpbin - AddResponseHeader=X-Response-Default-Foo, Default-Bar diff --git a/spring-cloud-gateway-server/pom.xml b/spring-cloud-gateway-server/pom.xml index dd390a1a9b..6430185a8a 100644 --- a/spring-cloud-gateway-server/pom.xml +++ b/spring-cloud-gateway-server/pom.xml @@ -192,6 +192,11 @@ spring-boot-starter-test test + + org.springframework.boot + spring-boot-properties-migrator + test + org.springframework.boot spring-boot-testcontainers diff --git a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/GatewayAutoConfiguration.java b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/GatewayAutoConfiguration.java index bebcf9b3e1..3acaa689b9 100644 --- a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/GatewayAutoConfiguration.java +++ b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/GatewayAutoConfiguration.java @@ -196,7 +196,7 @@ * @author FuYiNan Guo */ @Configuration(proxyBeanMethods = false) -@ConditionalOnProperty(name = "spring.cloud.gateway.enabled", matchIfMissing = true) +@ConditionalOnProperty(name = "spring.cloud.gateway.server.webflux.enabled", matchIfMissing = true) @EnableConfigurationProperties @AutoConfigureBefore({ HttpHandlerAutoConfiguration.class, WebFluxAutoConfiguration.class }) @AutoConfigureAfter({ GatewayReactiveLoadBalancerClientAutoConfiguration.class, @@ -272,7 +272,7 @@ public RouteLocator cachedCompositeRouteLocator(List routeLocators @Bean @ConditionalOnClass(name = "org.springframework.cloud.client.discovery.event.HeartbeatMonitor") - @ConditionalOnProperty(prefix = GatewayProperties.PREFIX, name = ".route-refresh-listener.enabled", + @ConditionalOnProperty(prefix = GatewayProperties.PREFIX, name = "route-refresh-listener.enabled", matchIfMissing = true) public RouteRefreshListener routeRefreshListener(ApplicationEventPublisher publisher) { return new RouteRefreshListener(publisher); @@ -290,7 +290,7 @@ public GlobalCorsProperties globalCorsProperties() { } @Bean - @ConditionalOnProperty(name = "spring.cloud.gateway.globalcors.enabled", matchIfMissing = true) + @ConditionalOnProperty(name = "spring.cloud.gateway.server.webflux.globalcors.enabled", matchIfMissing = true) public CorsGatewayFilterApplicationListener corsGatewayFilterApplicationListener( GlobalCorsProperties globalCorsProperties, RoutePredicateHandlerMapping routePredicateHandlerMapping, RouteLocator routeLocator) { @@ -318,9 +318,10 @@ public SecureHeadersProperties secureHeadersProperties() { } @Bean - @ConditionalOnProperty(name = "spring.cloud.gateway.forwarded.enabled", matchIfMissing = true) + @ConditionalOnProperty(name = "spring.cloud.gateway.server.webflux.forwarded.enabled", matchIfMissing = true) public ForwardedHeadersFilter forwardedHeadersFilter(Environment env, ServerProperties serverProperties) { - boolean forwardedByEnabled = env.getProperty("spring.cloud.gateway.forwarded.by.enabled", Boolean.class, false); + boolean forwardedByEnabled = env.getProperty("spring.cloud.gateway.server.webflux.forwarded.by.enabled", + Boolean.class, false); ForwardedHeadersFilter forwardedHeadersFilter = new ForwardedHeadersFilter(); forwardedHeadersFilter.setForwardedByEnabled(forwardedByEnabled); forwardedHeadersFilter.setServerPort(serverProperties.getPort()); @@ -335,7 +336,7 @@ public RemoveHopByHopHeadersFilter removeHopByHopHeadersFilter() { } @Bean - @ConditionalOnProperty(name = "spring.cloud.gateway.x-forwarded.enabled", matchIfMissing = true) + @ConditionalOnProperty(name = "spring.cloud.gateway.server.webflux.x-forwarded.enabled", matchIfMissing = true) public XForwardedHeadersFilter xForwardedHeadersFilter() { return new XForwardedHeadersFilter(); } @@ -468,7 +469,8 @@ public HeaderRoutePredicateFactory headerRoutePredicateFactory() { @Bean @ConditionalOnEnabledPredicate public HostRoutePredicateFactory hostRoutePredicateFactory(Environment env) { - boolean includePort = env.getProperty("spring.cloud.gateway.predicate.host.include-port", Boolean.class, true); + boolean includePort = env.getProperty("spring.cloud.gateway.server.webflux.predicate.host.include-port", + Boolean.class, true); return new HostRoutePredicateFactory(includePort); } @@ -769,7 +771,7 @@ protected static class NettyConfiguration { protected final Log logger = LogFactory.getLog(getClass()); @Bean - @ConditionalOnProperty(name = "spring.cloud.gateway.httpserver.wiretap") + @ConditionalOnProperty(name = "spring.cloud.gateway.server.webflux.httpserver.wiretap") public NettyWebServerFactoryCustomizer nettyServerWiretapCustomizer(Environment environment, ServerProperties serverProperties) { return new NettyWebServerFactoryCustomizer(environment, serverProperties) { @@ -853,7 +855,8 @@ public ReactorNettyRequestUpgradeStrategy reactorNettyRequestUpgradeStrategy( protected static class GatewayActuatorConfiguration { @Bean - @ConditionalOnProperty(name = "spring.cloud.gateway.actuator.verbose.enabled", matchIfMissing = true) + @ConditionalOnProperty(name = "spring.cloud.gateway.server.webflux.actuator.verbose.enabled", + matchIfMissing = true) @ConditionalOnAvailableEndpoint public GatewayControllerEndpoint gatewayControllerEndpoint(List globalFilters, List gatewayFilters, List routePredicates, @@ -883,7 +886,8 @@ private static class OnVerboseDisabledCondition extends NoneNestedConditions { super(ConfigurationPhase.REGISTER_BEAN); } - @ConditionalOnProperty(name = "spring.cloud.gateway.actuator.verbose.enabled", matchIfMissing = true) + @ConditionalOnProperty(name = "spring.cloud.gateway.server.webflux.actuator.verbose.enabled", + matchIfMissing = true) static class VerboseDisabled { } @@ -891,7 +895,7 @@ static class VerboseDisabled { } @Configuration(proxyBeanMethods = false) - @ConditionalOnProperty(name = "spring.cloud.gateway.enabled", matchIfMissing = true) + @ConditionalOnProperty(name = "spring.cloud.gateway.server.webflux.enabled", matchIfMissing = true) @ConditionalOnClass({ OAuth2AuthorizedClient.class, SecurityWebFilterChain.class, SecurityProperties.class }) @ConditionalOnEnabledFilter(TokenRelayGatewayFilterFactory.class) protected static class TokenRelayConfiguration { diff --git a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/GatewayClassPathWarningAutoConfiguration.java b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/GatewayClassPathWarningAutoConfiguration.java index 4650701628..88cfed0996 100644 --- a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/GatewayClassPathWarningAutoConfiguration.java +++ b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/GatewayClassPathWarningAutoConfiguration.java @@ -29,7 +29,7 @@ @Configuration(proxyBeanMethods = false) @AutoConfigureBefore(GatewayAutoConfiguration.class) -@ConditionalOnProperty(name = "spring.cloud.gateway.enabled", matchIfMissing = true) +@ConditionalOnProperty(name = GatewayProperties.PREFIX + ".enabled", matchIfMissing = true) public class GatewayClassPathWarningAutoConfiguration { private static final Log log = LogFactory.getLog(GatewayClassPathWarningAutoConfiguration.class); diff --git a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/GatewayFunctionAutoConfiguration.java b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/GatewayFunctionAutoConfiguration.java index 0afedfbe61..fdb7d659b1 100644 --- a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/GatewayFunctionAutoConfiguration.java +++ b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/GatewayFunctionAutoConfiguration.java @@ -38,7 +38,7 @@ @AutoConfigureAfter(ContextFunctionCatalogAutoConfiguration.class) @AutoConfigureBefore({ HttpHandlerAutoConfiguration.class, GatewayAutoConfiguration.class }) @ConditionalOnClass({ FunctionCatalog.class, DispatcherHandler.class }) -@ConditionalOnProperty(name = "spring.cloud.gateway.function.enabled", matchIfMissing = true) +@ConditionalOnProperty(name = GatewayProperties.PREFIX + ".function.enabled", matchIfMissing = true) class GatewayFunctionAutoConfiguration { @Bean diff --git a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/GatewayLoadBalancerProperties.java b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/GatewayLoadBalancerProperties.java index b2be55c976..0814fb31df 100644 --- a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/GatewayLoadBalancerProperties.java +++ b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/GatewayLoadBalancerProperties.java @@ -21,7 +21,7 @@ /** * @author Ryan Baxter */ -@ConfigurationProperties("spring.cloud.gateway.loadbalancer") +@ConfigurationProperties(GatewayProperties.PREFIX + ".loadbalancer") public class GatewayLoadBalancerProperties { private boolean use404; diff --git a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/GatewayMetricsProperties.java b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/GatewayMetricsProperties.java index b0ca9d4322..0d9e41836e 100644 --- a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/GatewayMetricsProperties.java +++ b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/GatewayMetricsProperties.java @@ -28,7 +28,7 @@ /** * @author Ingyu Hwang */ -@ConfigurationProperties("spring.cloud.gateway.metrics") +@ConfigurationProperties(GatewayProperties.PREFIX + ".metrics") @Validated public class GatewayMetricsProperties { diff --git a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/GatewayProperties.java b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/GatewayProperties.java index 356185f523..67e85c6d77 100644 --- a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/GatewayProperties.java +++ b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/GatewayProperties.java @@ -42,7 +42,7 @@ public class GatewayProperties { /** * Properties prefix. */ - public static final String PREFIX = "spring.cloud.gateway"; + public static final String PREFIX = "spring.cloud.gateway.server.webflux"; private final Log logger = LogFactory.getLog(getClass()); diff --git a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/GatewayRedisAutoConfiguration.java b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/GatewayRedisAutoConfiguration.java index 7b52c0a344..6540753365 100644 --- a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/GatewayRedisAutoConfiguration.java +++ b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/GatewayRedisAutoConfiguration.java @@ -50,7 +50,7 @@ @AutoConfigureBefore(GatewayAutoConfiguration.class) @ConditionalOnBean(ReactiveRedisTemplate.class) @ConditionalOnClass({ RedisTemplate.class, DispatcherHandler.class }) -@ConditionalOnProperty(name = "spring.cloud.gateway.redis.enabled", matchIfMissing = true) +@ConditionalOnProperty(name = GatewayProperties.PREFIX + ".redis.enabled", matchIfMissing = true) class GatewayRedisAutoConfiguration { @Bean @@ -72,7 +72,7 @@ public RedisRateLimiter redisRateLimiter(ReactiveStringRedisTemplate redisTempla } @Bean - @ConditionalOnProperty(value = "spring.cloud.gateway.redis-route-definition-repository.enabled", + @ConditionalOnProperty(value = GatewayProperties.PREFIX + ".redis-route-definition-repository.enabled", havingValue = "true") @ConditionalOnClass(ReactiveRedisTemplate.class) public RedisRouteDefinitionRepository redisRouteDefinitionRepository( diff --git a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/GatewayResilience4JCircuitBreakerAutoConfiguration.java b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/GatewayResilience4JCircuitBreakerAutoConfiguration.java index 598b1ef22c..af44c795d9 100644 --- a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/GatewayResilience4JCircuitBreakerAutoConfiguration.java +++ b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/GatewayResilience4JCircuitBreakerAutoConfiguration.java @@ -36,7 +36,7 @@ * @author Ryan Baxter */ @Configuration(proxyBeanMethods = false) -@ConditionalOnProperty(name = "spring.cloud.gateway.enabled", matchIfMissing = true) +@ConditionalOnProperty(name = GatewayProperties.PREFIX + ".enabled", matchIfMissing = true) @AutoConfigureAfter({ ReactiveResilience4JAutoConfiguration.class }) @ConditionalOnClass({ DispatcherHandler.class, ReactiveResilience4JAutoConfiguration.class, ReactiveCircuitBreakerFactory.class, ReactiveResilience4JCircuitBreakerFactory.class }) diff --git a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/GatewayServerWebfluxPropertiesMigrationListener.java b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/GatewayServerWebfluxPropertiesMigrationListener.java new file mode 100644 index 0000000000..eb7ef6d2aa --- /dev/null +++ b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/GatewayServerWebfluxPropertiesMigrationListener.java @@ -0,0 +1,183 @@ +/* + * Copyright 2013-2025 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.gateway.config; + +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import org.springframework.boot.context.event.ApplicationFailedEvent; +import org.springframework.boot.context.event.ApplicationPreparedEvent; +import org.springframework.boot.context.event.ApplicationReadyEvent; +import org.springframework.boot.context.event.SpringApplicationEvent; +import org.springframework.boot.context.properties.source.ConfigurationProperty; +import org.springframework.boot.context.properties.source.ConfigurationPropertyName; +import org.springframework.boot.context.properties.source.ConfigurationPropertySource; +import org.springframework.boot.context.properties.source.ConfigurationPropertySources; +import org.springframework.boot.context.properties.source.IterableConfigurationPropertySource; +import org.springframework.boot.env.OriginTrackedMapPropertySource; +import org.springframework.boot.origin.Origin; +import org.springframework.boot.origin.OriginTrackedValue; +import org.springframework.boot.origin.PropertySourceOrigin; +import org.springframework.boot.origin.TextResourceOrigin; +import org.springframework.context.ApplicationListener; +import org.springframework.core.env.ConfigurableEnvironment; +import org.springframework.core.env.PropertySource; +import org.springframework.util.ClassUtils; +import org.springframework.util.LinkedMultiValueMap; + +class GatewayServerWebfluxPropertiesMigrationListener implements ApplicationListener { + + private static final Log logger = LogFactory.getLog(GatewayServerWebfluxPropertiesMigrationListener.class); + + private static final String PROPERTIES_MIGRATOR_CLASS = "org.springframework.boot.context.properties.migrator.PropertiesMigrationListener"; + + private static final String DEPRECATED_ROOT = "spring.cloud.gateway"; + + private static final String DEPRECATED_ROUTES_LIST_KEY = DEPRECATED_ROOT + ".routes"; + + private static final String GATEWAY_PROPERTY_SOURCE_PREFIX = "migrategatewayflux"; + + private static final String NEW_ROUTES_LIST_KEY = GatewayProperties.PREFIX + ".routes"; + + private final List routesMigrations = new ArrayList<>(); + + @Override + public void onApplicationEvent(SpringApplicationEvent event) { + // only run if spring-boot-properties-migrator is on the classpath + if (!ClassUtils.isPresent(PROPERTIES_MIGRATOR_CLASS, null)) { + return; + } + if (event instanceof ApplicationPreparedEvent preparedEvent) { + onApplicationPreparedEvent(preparedEvent); + } + if (event instanceof ApplicationReadyEvent || event instanceof ApplicationFailedEvent) { + logLegacyPropertiesReport(); + } + } + + private void onApplicationPreparedEvent(ApplicationPreparedEvent event) { + // find deprecated keys + ConfigurableEnvironment env = event.getApplicationContext().getEnvironment(); + + ConfigurationPropertySources.get(env).forEach(propertySource -> { + routesMigrations.addAll(migrate(env, propertySource, GATEWAY_PROPERTY_SOURCE_PREFIX + "routes-", + DEPRECATED_ROUTES_LIST_KEY, NEW_ROUTES_LIST_KEY)); + }); + } + + private List migrate(ConfigurableEnvironment env, ConfigurationPropertySource propertySource, + String propertySourcePrefix, String deprecatedKey, String newKeyPrefix) { + List migrations = new ArrayList<>(); + + if (propertySource instanceof IterableConfigurationPropertySource iterableSource) { + ConfigurationPropertyName routesParentName = ConfigurationPropertyName.of(deprecatedKey); + List matchingConfigProps = iterableSource.filter(n -> { + if (n.getNumberOfElements() < routesParentName.getNumberOfElements()) { + return false; + } + ConfigurationPropertyName chop = n.chop(routesParentName.getNumberOfElements()); + return routesParentName.equals(chop); + }).stream().toList(); + if (!matchingConfigProps.isEmpty()) { + String originalPropertySourceName; + if (propertySource.getUnderlyingSource() instanceof PropertySource underlyingSource) { + originalPropertySourceName = underlyingSource.getName(); + } + else { + originalPropertySourceName = propertySource.getUnderlyingSource().toString(); + } + String newPropertySourceName = propertySourcePrefix + originalPropertySourceName; + Map content = new LinkedHashMap<>(); + // migrate to new keys + for (ConfigurationPropertyName originalPropertyName : matchingConfigProps) { + ConfigurationPropertyName suffix = originalPropertyName + .subName(routesParentName.getNumberOfElements()); + ConfigurationPropertyName newProperty = ConfigurationPropertyName.of(newKeyPrefix).append(suffix); + ConfigurationProperty configurationProperty = propertySource + .getConfigurationProperty(originalPropertyName); + Object value = configurationProperty.getValue(); + OriginTrackedValue originTrackedValue = OriginTrackedValue.of(value, + configurationProperty.getOrigin()); + content.put(newProperty.toString(), originTrackedValue); + migrations.add(new Migration(originalPropertySourceName, originalPropertyName, + configurationProperty, newProperty)); + } + env.getPropertySources() + .addBefore(originalPropertySourceName, + new OriginTrackedMapPropertySource(newPropertySourceName, content)); + } + } + return migrations; + } + + private void logLegacyPropertiesReport() { + // log warnings + if (!routesMigrations.isEmpty()) { + LinkedMultiValueMap content = new LinkedMultiValueMap<>(); + routesMigrations.forEach(migration -> content.add(migration.originalPropertySourceName(), migration)); + + StringBuilder report = new StringBuilder(); + report.append(String + .format("%nThe use of configuration keys that have been renamed was found in the environment:%n%n")); + + content.forEach((name, properties) -> { + report.append(String.format("Property source '%s':%n", name)); + // properties.sort(PropertyMigration.COMPARATOR); + properties.forEach((property) -> { + ConfigurationPropertyName originalPropertyName = property.originalPropertyName(); + report.append(String.format("\tKey: %s%n", originalPropertyName)); + Integer lineNumber = property.determineLineNumber(); + if (lineNumber != null) { + report.append(String.format("\t\tLine: %d%n", lineNumber)); + } + report.append(String.format("\t\tReplacement: %s%n", property.newProperty().toString())); + }); + report.append(String.format("%n")); + }); + + report.append(String.format("%n")); + report.append("Each configuration key has been temporarily mapped to its " + + "replacement for your convenience. To silence this warning, please " + + "update your configuration to use the new keys."); + report.append(String.format("%n")); + logger.warn(report.toString()); + } + } + + private record Migration(String originalPropertySourceName, ConfigurationPropertyName originalPropertyName, + ConfigurationProperty originalProperty, ConfigurationPropertyName newProperty) { + + private Integer determineLineNumber() { + Origin origin = originalProperty.getOrigin(); + if (origin instanceof PropertySourceOrigin propertySourceOrigin) { + origin = propertySourceOrigin.getOrigin(); + } + if (origin instanceof TextResourceOrigin textOrigin) { + if (textOrigin.getLocation() != null) { + return textOrigin.getLocation().getLine() + 1; + } + } + return null; + } + } + +} diff --git a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/GatewayStreamAutoConfiguration.java b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/GatewayStreamAutoConfiguration.java index ba5dcbb458..262a6078dc 100644 --- a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/GatewayStreamAutoConfiguration.java +++ b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/GatewayStreamAutoConfiguration.java @@ -35,7 +35,7 @@ @AutoConfigureAfter(BindingServiceConfiguration.class) @AutoConfigureBefore({ HttpHandlerAutoConfiguration.class, GatewayAutoConfiguration.class }) @ConditionalOnClass({ StreamBridge.class, DispatcherHandler.class }) -@ConditionalOnProperty(name = "spring.cloud.gateway.stream.enabled", matchIfMissing = true) +@ConditionalOnProperty(name = GatewayProperties.PREFIX + ".stream.enabled", matchIfMissing = true) class GatewayStreamAutoConfiguration { @Bean diff --git a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/GlobalCorsProperties.java b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/GlobalCorsProperties.java index db102fd822..b0b3851d8b 100644 --- a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/GlobalCorsProperties.java +++ b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/GlobalCorsProperties.java @@ -27,7 +27,7 @@ * Configuration properties for global configuration of cors. See * {@link RoutePredicateHandlerMapping} */ -@ConfigurationProperties("spring.cloud.gateway.globalcors") +@ConfigurationProperties(GatewayProperties.PREFIX + ".globalcors") public class GlobalCorsProperties { private final Map corsConfigurations = new LinkedHashMap<>(); diff --git a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/HttpClientProperties.java b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/HttpClientProperties.java index fef1d54cd7..96538e93bc 100644 --- a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/HttpClientProperties.java +++ b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/HttpClientProperties.java @@ -32,7 +32,7 @@ /** * Configuration properties for the Netty {@link reactor.netty.http.client.HttpClient}. */ -@ConfigurationProperties("spring.cloud.gateway.httpclient") +@ConfigurationProperties(GatewayProperties.PREFIX + ".httpclient") @Validated public class HttpClientProperties { diff --git a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/LocalResponseCacheAutoConfiguration.java b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/LocalResponseCacheAutoConfiguration.java index 908e2883f8..71e2641cb4 100644 --- a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/LocalResponseCacheAutoConfiguration.java +++ b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/LocalResponseCacheAutoConfiguration.java @@ -108,17 +108,19 @@ public static class OnGlobalLocalResponseCacheCondition extends AllNestedConditi super(ConfigurationPhase.REGISTER_BEAN); } - @ConditionalOnProperty(value = "spring.cloud.gateway.enabled", havingValue = "true", matchIfMissing = true) + @ConditionalOnProperty(value = GatewayProperties.PREFIX + ".enabled", havingValue = "true", + matchIfMissing = true) static class OnGatewayPropertyEnabled { } - @ConditionalOnProperty(value = "spring.cloud.gateway.filter.local-response-cache.enabled", havingValue = "true") + @ConditionalOnProperty(value = GatewayProperties.PREFIX + ".filter.local-response-cache.enabled", + havingValue = "true") static class OnLocalResponseCachePropertyEnabled { } - @ConditionalOnProperty(name = "spring.cloud.gateway.global-filter.local-response-cache.enabled", + @ConditionalOnProperty(name = GatewayProperties.PREFIX + ".global-filter.local-response-cache.enabled", havingValue = "true", matchIfMissing = true) static class OnGlobalLocalResponseCachePropertyEnabled { diff --git a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/SimpleUrlHandlerMappingGlobalCorsAutoConfiguration.java b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/SimpleUrlHandlerMappingGlobalCorsAutoConfiguration.java index 62c7ffad60..28bdea811c 100644 --- a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/SimpleUrlHandlerMappingGlobalCorsAutoConfiguration.java +++ b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/SimpleUrlHandlerMappingGlobalCorsAutoConfiguration.java @@ -30,7 +30,7 @@ */ @Configuration(proxyBeanMethods = false) @ConditionalOnClass(SimpleUrlHandlerMapping.class) -@ConditionalOnProperty(name = "spring.cloud.gateway.globalcors.add-to-simple-url-handler-mapping", +@ConditionalOnProperty(name = GatewayProperties.PREFIX + ".globalcors.add-to-simple-url-handler-mapping", matchIfMissing = false) public class SimpleUrlHandlerMappingGlobalCorsAutoConfiguration { diff --git a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/conditional/OnEnabledComponent.java b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/conditional/OnEnabledComponent.java index b3211dd551..5b48cabdde 100644 --- a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/conditional/OnEnabledComponent.java +++ b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/conditional/OnEnabledComponent.java @@ -34,7 +34,7 @@ public abstract class OnEnabledComponent extends SpringBootCondition implements ConfigurationCondition { - private static final String PREFIX = "spring.cloud.gateway."; + private static final String PREFIX = "spring.cloud.gateway.server.webflux."; private static final String SUFFIX = ".enabled"; diff --git a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/discovery/DiscoveryLocatorProperties.java b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/discovery/DiscoveryLocatorProperties.java index 9426ed37dd..ba0d555700 100644 --- a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/discovery/DiscoveryLocatorProperties.java +++ b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/discovery/DiscoveryLocatorProperties.java @@ -24,7 +24,7 @@ import org.springframework.cloud.gateway.handler.predicate.PredicateDefinition; import org.springframework.core.style.ToStringCreator; -@ConfigurationProperties("spring.cloud.gateway.discovery.locator") +@ConfigurationProperties("spring.cloud.gateway.server.webflux.discovery.locator") public class DiscoveryLocatorProperties { /** Flag that enables DiscoveryClient gateway integration. */ diff --git a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/discovery/GatewayDiscoveryClientAutoConfiguration.java b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/discovery/GatewayDiscoveryClientAutoConfiguration.java index 94cc64e238..06efe748dd 100644 --- a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/discovery/GatewayDiscoveryClientAutoConfiguration.java +++ b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/discovery/GatewayDiscoveryClientAutoConfiguration.java @@ -45,7 +45,7 @@ * @author Spencer Gibb */ @Configuration(proxyBeanMethods = false) -@ConditionalOnProperty(name = "spring.cloud.gateway.enabled", matchIfMissing = true) +@ConditionalOnProperty(name = "spring.cloud.gateway.server.webflux.enabled", matchIfMissing = true) @AutoConfigureBefore(GatewayAutoConfiguration.class) @AutoConfigureAfter(CompositeDiscoveryClientAutoConfiguration.class) @ConditionalOnClass({ DispatcherHandler.class, CompositeDiscoveryClientAutoConfiguration.class }) @@ -92,7 +92,7 @@ public DiscoveryLocatorProperties discoveryLocatorProperties() { public static class ReactiveDiscoveryClientRouteDefinitionLocatorConfiguration { @Bean - @ConditionalOnProperty(name = "spring.cloud.gateway.discovery.locator.enabled") + @ConditionalOnProperty(name = "spring.cloud.gateway.server.webflux.discovery.locator.enabled") public DiscoveryClientRouteDefinitionLocator discoveryClientRouteDefinitionLocator( ReactiveDiscoveryClient discoveryClient, DiscoveryLocatorProperties properties) { return new DiscoveryClientRouteDefinitionLocator(discoveryClient, properties); diff --git a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/factory/RequestRateLimiterGatewayFilterFactory.java b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/factory/RequestRateLimiterGatewayFilterFactory.java index e0eb2102b7..e3f0b2f642 100644 --- a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/factory/RequestRateLimiterGatewayFilterFactory.java +++ b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/factory/RequestRateLimiterGatewayFilterFactory.java @@ -34,7 +34,7 @@ * User Request Rate Limiter filter. See https://stripe.com/blog/rate-limiters and * https://gist.github.com/ptarjan/e38f45f2dfe601419ca3af937fff574d#file-1-check_request_rate_limiter-rb-L11-L34. */ -@ConfigurationProperties("spring.cloud.gateway.filter.request-rate-limiter") +@ConfigurationProperties("spring.cloud.gateway.server.webflux.filter.request-rate-limiter") public class RequestRateLimiterGatewayFilterFactory extends AbstractGatewayFilterFactory { diff --git a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/factory/SecureHeadersProperties.java b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/factory/SecureHeadersProperties.java index 2456a6f4eb..7ad3cfaf88 100644 --- a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/factory/SecureHeadersProperties.java +++ b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/factory/SecureHeadersProperties.java @@ -27,7 +27,7 @@ /** * @author Spencer Gibb, Thirunavukkarasu Ravichandran, Jörg Richter */ -@ConfigurationProperties("spring.cloud.gateway.filter.secure-headers") +@ConfigurationProperties("spring.cloud.gateway.server.webflux.filter.secure-headers") public class SecureHeadersProperties { /** diff --git a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/factory/SetStatusGatewayFilterFactory.java b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/factory/SetStatusGatewayFilterFactory.java index 4ca59ec836..428e267e0b 100644 --- a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/factory/SetStatusGatewayFilterFactory.java +++ b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/factory/SetStatusGatewayFilterFactory.java @@ -35,7 +35,7 @@ /** * @author Spencer Gibb */ -@ConfigurationProperties("spring.cloud.gateway.set-status") +@ConfigurationProperties("spring.cloud.gateway.server.webflux.set-status") public class SetStatusGatewayFilterFactory extends AbstractGatewayFilterFactory { /** diff --git a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/factory/cache/LocalResponseCacheGatewayFilterFactory.java b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/factory/cache/LocalResponseCacheGatewayFilterFactory.java index a173882727..c28a00e4bc 100644 --- a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/factory/cache/LocalResponseCacheGatewayFilterFactory.java +++ b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/factory/cache/LocalResponseCacheGatewayFilterFactory.java @@ -40,7 +40,8 @@ * @author Marta Medio * @author Ignacio Lozano */ -@ConditionalOnProperty(value = "spring.cloud.gateway.filter.local-response-cache.enabled", havingValue = "true") +@ConditionalOnProperty(value = "spring.cloud.gateway.server.webflux.filter.local-response-cache.enabled", + havingValue = "true") public class LocalResponseCacheGatewayFilterFactory extends AbstractGatewayFilterFactory { diff --git a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/factory/cache/LocalResponseCacheProperties.java b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/factory/cache/LocalResponseCacheProperties.java index 1aead89abe..56e026e46d 100644 --- a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/factory/cache/LocalResponseCacheProperties.java +++ b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/factory/cache/LocalResponseCacheProperties.java @@ -30,7 +30,7 @@ @ConfigurationProperties(prefix = LocalResponseCacheProperties.PREFIX) public class LocalResponseCacheProperties { - static final String PREFIX = "spring.cloud.gateway.filter.local-response-cache"; + static final String PREFIX = "spring.cloud.gateway.server.webflux.filter.local-response-cache"; private static final Log LOGGER = LogFactory.getLog(LocalResponseCacheProperties.class); diff --git a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/headers/RemoveHopByHopHeadersFilter.java b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/headers/RemoveHopByHopHeadersFilter.java index 556f1c979c..fa8ff08a9e 100644 --- a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/headers/RemoveHopByHopHeadersFilter.java +++ b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/headers/RemoveHopByHopHeadersFilter.java @@ -30,7 +30,7 @@ import org.springframework.util.Assert; import org.springframework.web.server.ServerWebExchange; -@ConfigurationProperties("spring.cloud.gateway.filter.remove-hop-by-hop") +@ConfigurationProperties("spring.cloud.gateway.server.webflux.filter.remove-hop-by-hop") public class RemoveHopByHopHeadersFilter implements HttpHeadersFilter, Ordered { /** diff --git a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/headers/XForwardedHeadersFilter.java b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/headers/XForwardedHeadersFilter.java index 2c1e8363eb..2dea38fcdd 100644 --- a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/headers/XForwardedHeadersFilter.java +++ b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/headers/XForwardedHeadersFilter.java @@ -32,7 +32,7 @@ import static org.springframework.cloud.gateway.support.ServerWebExchangeUtils.GATEWAY_ORIGINAL_REQUEST_URL_ATTR; import static org.springframework.cloud.gateway.support.ServerWebExchangeUtils.GATEWAY_REQUEST_URL_ATTR; -@ConfigurationProperties("spring.cloud.gateway.x-forwarded") +@ConfigurationProperties("spring.cloud.gateway.server.webflux.x-forwarded") public class XForwardedHeadersFilter implements HttpHeadersFilter, Ordered { /** Default http port. */ diff --git a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/ratelimit/RedisRateLimiter.java b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/ratelimit/RedisRateLimiter.java index 6ae0c46766..5d4d73cbf5 100644 --- a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/ratelimit/RedisRateLimiter.java +++ b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/ratelimit/RedisRateLimiter.java @@ -31,6 +31,7 @@ import org.springframework.beans.BeansException; import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.cloud.gateway.config.GatewayProperties; import org.springframework.cloud.gateway.route.RouteDefinitionRouteLocator; import org.springframework.cloud.gateway.support.ConfigurationService; import org.springframework.context.ApplicationContext; @@ -50,7 +51,7 @@ * @author Denis Cutic * @author Andrey Muchnik */ -@ConfigurationProperties("spring.cloud.gateway.redis-rate-limiter") +@ConfigurationProperties(GatewayProperties.PREFIX + ".redis-rate-limiter") public class RedisRateLimiter extends AbstractRateLimiter implements ApplicationContextAware { /** diff --git a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/support/ShortcutConfigurable.java b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/support/ShortcutConfigurable.java index 30e2cc2e6f..16c3f30e2a 100644 --- a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/support/ShortcutConfigurable.java +++ b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/support/ShortcutConfigurable.java @@ -183,8 +183,8 @@ class GatewayEvaluationContext implements EvaluationContext { public GatewayEvaluationContext(BeanFactory beanFactory) { this.beanFactoryResolver = new BeanFactoryResolver(beanFactory); Environment env = beanFactory.getBean(Environment.class); - boolean restrictive = env.getProperty("spring.cloud.gateway.restrictive-property-accessor.enabled", - Boolean.class, true); + boolean restrictive = env.getProperty( + "spring.cloud.gateway.server.webflux.restrictive-property-accessor.enabled", Boolean.class, true); if (restrictive) { delegate = SimpleEvaluationContext.forPropertyAccessors(new RestrictivePropertyAccessor()) .withMethodResolvers((context, targetObject, name, argumentTypes) -> null) diff --git a/spring-cloud-gateway-server/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/spring-cloud-gateway-server/src/main/resources/META-INF/additional-spring-configuration-metadata.json index 1aea9f85d9..1a646d7114 100644 --- a/spring-cloud-gateway-server/src/main/resources/META-INF/additional-spring-configuration-metadata.json +++ b/spring-cloud-gateway-server/src/main/resources/META-INF/additional-spring-configuration-metadata.json @@ -1,447 +1,2447 @@ { "properties": [ { - "name": "spring.cloud.gateway.filter.add-request-header.enabled", + "name": "spring.cloud.gateway.server.webflux.filter.add-request-header.enabled", "type": "java.lang.Boolean", "description": "Enables the add-request-header filter.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.filter.map-request-header.enabled", + "name": "spring.cloud.gateway.server.webflux.filter.map-request-header.enabled", "type": "java.lang.Boolean", "description": "Enables the map-request-header filter.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.filter.add-request-parameter.enabled", + "name": "spring.cloud.gateway.server.webflux.filter.add-request-parameter.enabled", "type": "java.lang.Boolean", "description": "Enables the add-request-parameter filter.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.filter.add-response-header.enabled", + "name": "spring.cloud.gateway.server.webflux.filter.add-response-header.enabled", "type": "java.lang.Boolean", "description": "Enables the add-response-header filter.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.filter.json-to-grpc.enabled", + "name": "spring.cloud.gateway.server.webflux.filter.json-to-grpc.enabled", "type": "java.lang.Boolean", "description": "Enables the JSON to gRPC filter.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.filter.modify-request-body.enabled", + "name": "spring.cloud.gateway.server.webflux.filter.modify-request-body.enabled", "type": "java.lang.Boolean", "description": "Enables the modify-request-body filter.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.filter.local-response-cache.enabled", + "name": "spring.cloud.gateway.server.webflux.filter.local-response-cache.enabled", "type": "java.lang.Boolean", "description": "Enables the local-response-cache filter.", "defaultValue": "false" }, { - "name": "spring.cloud.gateway.filter.local-response-cache.size", + "name": "spring.cloud.gateway.server.webflux.filter.local-response-cache.size", "type": "org.springframework.util.unit.DataSize", "description": "Maximum size of the cache to evict entries for this route (in KB, MB and GB)." }, { - "name": "spring.cloud.gateway.filter.local-response-cache.time-to-live", + "name": "spring.cloud.gateway.server.webflux.filter.local-response-cache.time-to-live", "type": "java.time.Duration", "description": "Time to expire a cache entry (expressed in s for seconds, m for minutes, and h for hours).", "defaultValue": "5m" }, { - "name": "spring.cloud.gateway.filter.dedupe-response-header.enabled", + "name": "spring.cloud.gateway.server.webflux.filter.dedupe-response-header.enabled", "type": "java.lang.Boolean", "description": "Enables the dedupe-response-header filter.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.filter.modify-response-body.enabled", + "name": "spring.cloud.gateway.server.webflux.filter.modify-response-body.enabled", "type": "java.lang.Boolean", "description": "Enables the modify-response-body filter.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.filter.prefix-path.enabled", + "name": "spring.cloud.gateway.server.webflux.filter.prefix-path.enabled", "type": "java.lang.Boolean", "description": "Enables the prefix-path filter.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.filter.preserve-host-header.enabled", + "name": "spring.cloud.gateway.server.webflux.filter.preserve-host-header.enabled", "type": "java.lang.Boolean", "description": "Enables the preserve-host-header filter.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.filter.redirect-to.enabled", + "name": "spring.cloud.gateway.server.webflux.filter.redirect-to.enabled", "type": "java.lang.Boolean", "description": "Enables the redirect-to filter.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.filter.remove-request-header.enabled", + "name": "spring.cloud.gateway.server.webflux.filter.remove-request-header.enabled", "type": "java.lang.Boolean", "description": "Enables the remove-request-header filter.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.filter.remove-request-parameter.enabled", + "name": "spring.cloud.gateway.server.webflux.filter.remove-request-parameter.enabled", "type": "java.lang.Boolean", "description": "Enables the remove-request-parameter filter.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.filter.remove-response-header.enabled", + "name": "spring.cloud.gateway.server.webflux.filter.remove-response-header.enabled", "type": "java.lang.Boolean", "description": "Enables the remove-response-header filter.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.filter.request-rate-limiter.enabled", + "name": "spring.cloud.gateway.server.webflux.filter.request-rate-limiter.enabled", "type": "java.lang.Boolean", "description": "Enables the request-rate-limiter filter.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.filter.rewrite-path.enabled", + "name": "spring.cloud.gateway.server.webflux.filter.rewrite-path.enabled", "type": "java.lang.Boolean", "description": "Enables the rewrite-path filter.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.filter.retry.enabled", + "name": "spring.cloud.gateway.server.webflux.filter.retry.enabled", "type": "java.lang.Boolean", "description": "Enables the retry filter.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.filter.set-path.enabled", + "name": "spring.cloud.gateway.server.webflux.filter.set-path.enabled", "type": "java.lang.Boolean", "description": "Enables the set-path filter.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.filter.secure-headers.enabled", + "name": "spring.cloud.gateway.server.webflux.filter.secure-headers.enabled", "type": "java.lang.Boolean", "description": "Enables the secure-headers filter.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.filter.set-request-header.enabled", + "name": "spring.cloud.gateway.server.webflux.filter.set-request-header.enabled", "type": "java.lang.Boolean", "description": "Enables the set-request-header filter.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.filter.set-request-host-header.enabled", + "name": "spring.cloud.gateway.server.webflux.filter.set-request-host-header.enabled", "type": "java.lang.Boolean", "description": "Enables the set-request-host-header filter.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.filter.set-response-header.enabled", + "name": "spring.cloud.gateway.server.webflux.filter.set-response-header.enabled", "type": "java.lang.Boolean", "description": "Enables the set-response-header filter.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.filter.rewrite-response-header.enabled", + "name": "spring.cloud.gateway.server.webflux.filter.rewrite-response-header.enabled", "type": "java.lang.Boolean", "description": "Enables the rewrite-response-header filter.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.filter.rewrite-location-response-header.enabled", + "name": "spring.cloud.gateway.server.webflux.filter.rewrite-location-response-header.enabled", "type": "java.lang.Boolean", "description": "Enables the rewrite-location-response-header filter.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.filter.rewrite-location.enabled", + "name": "spring.cloud.gateway.server.webflux.filter.rewrite-location.enabled", "type": "java.lang.Boolean", "description": "Enables the rewrite-location filter.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.filter.rewrite-request-parameter.enabled", + "name": "spring.cloud.gateway.server.webflux.filter.rewrite-request-parameter.enabled", "type": "java.lang.Boolean", "description": "Enables the rewrite-request-parameter filter.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.filter.set-status.enabled", + "name": "spring.cloud.gateway.server.webflux.filter.set-status.enabled", "type": "java.lang.Boolean", "description": "Enables the set-status filter.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.filter.save-session.enabled", + "name": "spring.cloud.gateway.server.webflux.filter.save-session.enabled", "type": "java.lang.Boolean", "description": "Enables the save-session filter.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.filter.strip-prefix.enabled", + "name": "spring.cloud.gateway.server.webflux.filter.strip-prefix.enabled", "type": "java.lang.Boolean", "description": "Enables the strip-prefix filter.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.filter.request-header-to-request-uri.enabled", + "name": "spring.cloud.gateway.server.webflux.filter.request-header-to-request-uri.enabled", "type": "java.lang.Boolean", "description": "Enables the request-header-to-request-uri filter.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.filter.request-size.enabled", + "name": "spring.cloud.gateway.server.webflux.filter.request-size.enabled", "type": "java.lang.Boolean", "description": "Enables the request-size filter.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.filter.request-header-size.enabled", + "name": "spring.cloud.gateway.server.webflux.filter.request-header-size.enabled", "type": "java.lang.Boolean", "description": "Enables the request-header-size filter.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.filter.circuit-breaker.enabled", + "name": "spring.cloud.gateway.server.webflux.filter.circuit-breaker.enabled", "type": "java.lang.Boolean", "description": "Enables the circuit-breaker filter.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.filter.hystrix.enabled", + "name": "spring.cloud.gateway.server.webflux.filter.hystrix.enabled", "type": "java.lang.Boolean", "description": "Enables the hystrix filter.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.filter.fallback-headers.enabled", + "name": "spring.cloud.gateway.server.webflux.filter.fallback-headers.enabled", "type": "java.lang.Boolean", "description": "Enables the fallback-headers filter.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.global-filter.adapt-cached-body.enabled", + "name": "spring.cloud.gateway.server.webflux.global-filter.adapt-cached-body.enabled", "type": "java.lang.Boolean", "description": "Enables the adapt-cached-body global filter.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.global-filter.remove-cached-body.enabled", + "name": "spring.cloud.gateway.server.webflux.global-filter.remove-cached-body.enabled", "type": "java.lang.Boolean", "description": "Enables the remove-cached-body global filter.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.global-filter.route-to-request-url.enabled", + "name": "spring.cloud.gateway.server.webflux.global-filter.route-to-request-url.enabled", "type": "java.lang.Boolean", "description": "Enables the route-to-request-url global filter.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.global-filter.forward-routing.enabled", + "name": "spring.cloud.gateway.server.webflux.global-filter.forward-routing.enabled", "type": "java.lang.Boolean", "description": "Enables the forward-routing global filter.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.global-filter.forward-path.enabled", + "name": "spring.cloud.gateway.server.webflux.global-filter.forward-path.enabled", "type": "java.lang.Boolean", "description": "Enables the forward-path global filter.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.global-filter.websocket-routing.enabled", + "name": "spring.cloud.gateway.server.webflux.global-filter.websocket-routing.enabled", "type": "java.lang.Boolean", "description": "Enables the websocket-routing global filter.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.global-filter.netty-write-response.enabled", + "name": "spring.cloud.gateway.server.webflux.global-filter.netty-write-response.enabled", "type": "java.lang.Boolean", "description": "Enables the netty-write-response global filter.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.global-filter.netty-routing.enabled", + "name": "spring.cloud.gateway.server.webflux.global-filter.netty-routing.enabled", "type": "java.lang.Boolean", "description": "Enables the netty-routing global filter.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.global-filter.reactive-load-balancer-client.enabled", + "name": "spring.cloud.gateway.server.webflux.global-filter.reactive-load-balancer-client.enabled", "type": "java.lang.Boolean", "description": "Enables the reactive-load-balancer-client global filter.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.global-filter.load-balancer-client.enabled", + "name": "spring.cloud.gateway.server.webflux.global-filter.load-balancer-client.enabled", "type": "java.lang.Boolean", "description": "Enables the load-balancer-client global filter.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.global-filter.local-response-cache.enabled", + "name": "spring.cloud.gateway.server.webflux.global-filter.local-response-cache.enabled", "type": "java.lang.Boolean", "description": "Enables the local-response-cache filter for all routes, it allows to add a specific configuration at route level using LocalResponseCache filter.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.predicate.after.enabled", + "name": "spring.cloud.gateway.server.webflux.predicate.after.enabled", "type": "java.lang.Boolean", "description": "Enables the after predicate.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.predicate.before.enabled", + "name": "spring.cloud.gateway.server.webflux.predicate.before.enabled", "type": "java.lang.Boolean", "description": "Enables the before predicate.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.predicate.between.enabled", + "name": "spring.cloud.gateway.server.webflux.predicate.between.enabled", "type": "java.lang.Boolean", "description": "Enables the between predicate.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.predicate.cookie.enabled", + "name": "spring.cloud.gateway.server.webflux.predicate.cookie.enabled", "type": "java.lang.Boolean", "description": "Enables the cookie predicate.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.predicate.header.enabled", + "name": "spring.cloud.gateway.server.webflux.predicate.header.enabled", "type": "java.lang.Boolean", "description": "Enables the header predicate.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.predicate.host.enabled", + "name": "spring.cloud.gateway.server.webflux.predicate.host.enabled", "type": "java.lang.Boolean", "description": "Enables the host predicate.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.predicate.method.enabled", + "name": "spring.cloud.gateway.server.webflux.predicate.method.enabled", "type": "java.lang.Boolean", "description": "Enables the method predicate.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.predicate.path.enabled", + "name": "spring.cloud.gateway.server.webflux.predicate.path.enabled", "type": "java.lang.Boolean", "description": "Enables the path predicate.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.predicate.query.enabled", + "name": "spring.cloud.gateway.server.webflux.predicate.query.enabled", "type": "java.lang.Boolean", "description": "Enables the query predicate.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.predicate.read-body.enabled", + "name": "spring.cloud.gateway.server.webflux.predicate.read-body.enabled", "type": "java.lang.Boolean", "description": "Enables the read-body predicate.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.predicate.remote-addr.enabled", + "name": "spring.cloud.gateway.server.webflux.predicate.remote-addr.enabled", "type": "java.lang.Boolean", "description": "Enables the remote-addr predicate.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.predicate.xforwarded-remote-addr.enabled", + "name": "spring.cloud.gateway.server.webflux.predicate.xforwarded-remote-addr.enabled", "type": "java.lang.Boolean", "description": "Enables the xforwarded-remote-addr predicate.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.predicate.weight.enabled", + "name": "spring.cloud.gateway.server.webflux.predicate.weight.enabled", "type": "java.lang.Boolean", "description": "Enables the weight predicate.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.predicate.cloud-foundry-route-service.enabled", + "name": "spring.cloud.gateway.server.webflux.predicate.cloud-foundry-route-service.enabled", "type": "java.lang.Boolean", "description": "Enables the cloud-foundry-route-service predicate.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.enabled", + "name": "spring.cloud.gateway.server.webflux.enabled", "type": "java.lang.Boolean", "description": "Enables gateway functionality.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.forwarded.enabled", + "name": "spring.cloud.gateway.server.webflux.forwarded.enabled", "type": "java.lang.Boolean", "description": "Enables the ForwardedHeadersFilter.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.forwarded.by.enabled", + "name": "spring.cloud.gateway.server.webflux.forwarded.by.enabled", "type": "java.lang.Boolean", "description": "Enables the Forwarded: by header part.", "defaultValue": "false" }, { - "name": "spring.cloud.gateway.httpserver.wiretap", + "name": "spring.cloud.gateway.server.webflux.httpserver.wiretap", "type": "java.lang.Boolean", "description": "Enables wiretap debugging for Netty HttpServer.", "defaultValue": "false" }, { - "name": "spring.cloud.gateway.globalcors.add-to-simple-url-handler-mapping", + "name": "spring.cloud.gateway.server.webflux.globalcors.add-to-simple-url-handler-mapping", "type": "java.lang.Boolean", "description": "If global CORS config should be added to the URL handler.", "defaultValue": "false" }, { - "name": "spring.cloud.gateway.handler-mapping.order", + "name": "spring.cloud.gateway.server.webflux.handler-mapping.order", "type": "java.lang.Integer", "description": "The order of RoutePredicateHandlerMapping.", "defaultValue": "1" }, { - "name": "spring.cloud.gateway.restrictive-property-accessor.enabled", + "name": "spring.cloud.gateway.server.webflux.restrictive-property-accessor.enabled", "type": "java.lang.Boolean", "description": "Restricts method and property access in SpEL.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.observability.enabled", + "name": "spring.cloud.gateway.server.webflux.observability.enabled", "type": "java.lang.Boolean", "description": "If Micrometer Observability support should be turned on.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.predicate.host.include-port", + "name": "spring.cloud.gateway.server.webflux.predicate.host.include-port", "type": "java.lang.Boolean", "description": "Include the port in matching the host name.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.route-refresh-listener.enabled", + "name": "spring.cloud.gateway.server.webflux.route-refresh-listener.enabled", "type": "java.lang.Boolean", "description": "If RouteRefreshListener should be turned on.", "defaultValue": "true" }, { - "name": "spring.cloud.gateway.redis-route-definition-repository.enabled", + "name": "spring.cloud.gateway.server.webflux.redis-route-definition-repository.enabled", "type": "java.lang.Boolean", "description": "If RedisRouteDefinitionRepository should be enabled.", "defaultValue": "true" + }, + { + "name": "spring.cloud.gateway", + "type": "org.springframework.cloud.gateway.config.GatewayProperties", + "sourceType": "org.springframework.cloud.gateway.config.GatewayProperties", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.discovery.locator", + "type": "org.springframework.cloud.gateway.discovery.DiscoveryLocatorProperties", + "sourceType": "org.springframework.cloud.gateway.discovery.DiscoveryLocatorProperties", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.discovery.locator", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.filter.local-response-cache", + "type": "org.springframework.cloud.gateway.filter.factory.cache.LocalResponseCacheProperties", + "sourceType": "org.springframework.cloud.gateway.filter.factory.cache.LocalResponseCacheProperties", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.filter.local-response-cache", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.filter.local-response-cache.request", + "type": "org.springframework.cloud.gateway.filter.factory.cache.LocalResponseCacheProperties$RequestOptions", + "sourceType": "org.springframework.cloud.gateway.filter.factory.cache.LocalResponseCacheProperties", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.filter.local-response-cache.request", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.filter.remove-hop-by-hop", + "type": "org.springframework.cloud.gateway.filter.headers.RemoveHopByHopHeadersFilter", + "sourceType": "org.springframework.cloud.gateway.filter.headers.RemoveHopByHopHeadersFilter", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.filter.remove-hop-by-hop", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.filter.request-rate-limiter", + "type": "org.springframework.cloud.gateway.filter.factory.RequestRateLimiterGatewayFilterFactory", + "sourceType": "org.springframework.cloud.gateway.filter.factory.RequestRateLimiterGatewayFilterFactory", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.filter.request-rate-limiter", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.filter.secure-headers", + "type": "org.springframework.cloud.gateway.filter.factory.SecureHeadersProperties", + "sourceType": "org.springframework.cloud.gateway.filter.factory.SecureHeadersProperties", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.filter.secure-headers", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.globalcors", + "type": "org.springframework.cloud.gateway.config.GlobalCorsProperties", + "sourceType": "org.springframework.cloud.gateway.config.GlobalCorsProperties", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.globalcors", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.httpclient", + "type": "org.springframework.cloud.gateway.config.HttpClientProperties", + "sourceType": "org.springframework.cloud.gateway.config.HttpClientProperties", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.httpclient", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.httpclient.pool", + "type": "org.springframework.cloud.gateway.config.HttpClientProperties$Pool", + "sourceType": "org.springframework.cloud.gateway.config.HttpClientProperties", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.httpclient.pool", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.httpclient.proxy", + "type": "org.springframework.cloud.gateway.config.HttpClientProperties$Proxy", + "sourceType": "org.springframework.cloud.gateway.config.HttpClientProperties", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.httpclient.proxy", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.httpclient.ssl", + "type": "org.springframework.cloud.gateway.config.HttpClientProperties$Ssl", + "sourceType": "org.springframework.cloud.gateway.config.HttpClientProperties", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.httpclient.ssl", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.httpclient.websocket", + "type": "org.springframework.cloud.gateway.config.HttpClientProperties$Websocket", + "sourceType": "org.springframework.cloud.gateway.config.HttpClientProperties", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.httpclient.websocket", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.loadbalancer", + "type": "org.springframework.cloud.gateway.config.GatewayLoadBalancerProperties", + "sourceType": "org.springframework.cloud.gateway.config.GatewayLoadBalancerProperties", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.loadbalancer", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.metrics", + "type": "org.springframework.cloud.gateway.config.GatewayMetricsProperties", + "sourceType": "org.springframework.cloud.gateway.config.GatewayMetricsProperties", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.metrics", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.redis-rate-limiter", + "type": "org.springframework.cloud.gateway.filter.ratelimit.RedisRateLimiter", + "sourceType": "org.springframework.cloud.gateway.filter.ratelimit.RedisRateLimiter", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.redis-rate-limiter", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.set-status", + "type": "org.springframework.cloud.gateway.filter.factory.SetStatusGatewayFilterFactory", + "sourceType": "org.springframework.cloud.gateway.filter.factory.SetStatusGatewayFilterFactory", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.set-status", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.x-forwarded", + "type": "org.springframework.cloud.gateway.filter.headers.XForwardedHeadersFilter", + "sourceType": "org.springframework.cloud.gateway.filter.headers.XForwardedHeadersFilter", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.x-forwarded", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.default-filters", + "type": "java.util.List", + "description": "List of filter definitions that are applied to every route.", + "sourceType": "org.springframework.cloud.gateway.config.GatewayProperties", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.default-filters", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.discovery.locator.enabled", + "type": "java.lang.Boolean", + "description": "Flag that enables DiscoveryClient gateway integration.", + "sourceType": "org.springframework.cloud.gateway.discovery.DiscoveryLocatorProperties", + "defaultValue": false, + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.discovery.locator.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.discovery.locator.filters", + "type": "java.util.List", + "sourceType": "org.springframework.cloud.gateway.discovery.DiscoveryLocatorProperties", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.discovery.locator.filters", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.discovery.locator.include-expression", + "type": "java.lang.String", + "description": "SpEL expression that will evaluate whether to include a service in gateway integration or not, defaults to: true.", + "sourceType": "org.springframework.cloud.gateway.discovery.DiscoveryLocatorProperties", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.discovery.locator.include-expression", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.discovery.locator.lower-case-service-id", + "type": "java.lang.Boolean", + "description": "Option to lower case serviceId in predicates and filters, defaults to false. Useful with eureka when it automatically uppercases serviceId. so MYSERIVCE, would match \/myservice\/**", + "sourceType": "org.springframework.cloud.gateway.discovery.DiscoveryLocatorProperties", + "defaultValue": false, + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.discovery.locator.lower-case-service-id", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.discovery.locator.predicates", + "type": "java.util.List", + "sourceType": "org.springframework.cloud.gateway.discovery.DiscoveryLocatorProperties", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.discovery.locator.predicates", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.discovery.locator.route-id-prefix", + "type": "java.lang.String", + "description": "The prefix for the routeId, defaults to discoveryClient.getClass().getSimpleName() + \"_\". Service Id will be appended to create the routeId.", + "sourceType": "org.springframework.cloud.gateway.discovery.DiscoveryLocatorProperties", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.discovery.locator.route-id-prefix", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.discovery.locator.url-expression", + "type": "java.lang.String", + "description": "SpEL expression that create the uri for each route, defaults to: 'lb:\/\/'+serviceId.", + "sourceType": "org.springframework.cloud.gateway.discovery.DiscoveryLocatorProperties", + "defaultValue": "'lb:\/\/'+serviceId", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.discovery.locator.url-expression", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.enabled", + "type": "java.lang.Boolean", + "description": "Enables gateway functionality.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.fail-on-route-definition-error", + "type": "java.lang.Boolean", + "description": "Option to fail on route definition errors, defaults to true. Otherwise, a warning is logged.", + "sourceType": "org.springframework.cloud.gateway.config.GatewayProperties", + "defaultValue": true, + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.fail-on-route-definition-error", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.filter.add-request-header.enabled", + "type": "java.lang.Boolean", + "description": "Enables the add-request-header filter.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.filter.add-request-header.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.filter.add-request-parameter.enabled", + "type": "java.lang.Boolean", + "description": "Enables the add-request-parameter filter.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.filter.add-request-parameter.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.filter.add-response-header.enabled", + "type": "java.lang.Boolean", + "description": "Enables the add-response-header filter.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.filter.add-response-header.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.filter.circuit-breaker.enabled", + "type": "java.lang.Boolean", + "description": "Enables the circuit-breaker filter.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.filter.circuit-breaker.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.filter.dedupe-response-header.enabled", + "type": "java.lang.Boolean", + "description": "Enables the dedupe-response-header filter.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.filter.dedupe-response-header.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.filter.fallback-headers.enabled", + "type": "java.lang.Boolean", + "description": "Enables the fallback-headers filter.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.filter.fallback-headers.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.filter.hystrix.enabled", + "type": "java.lang.Boolean", + "description": "Enables the hystrix filter.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.filter.hystrix.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.filter.json-to-grpc.enabled", + "type": "java.lang.Boolean", + "description": "Enables the JSON to gRPC filter.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.filter.json-to-grpc.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.filter.local-response-cache.enabled", + "type": "java.lang.Boolean", + "description": "Enables the local-response-cache filter.", + "defaultValue": "false", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.filter.local-response-cache.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.filter.local-response-cache.request.no-cache-strategy", + "type": "org.springframework.cloud.gateway.filter.factory.cache.LocalResponseCacheProperties$NoCacheStrategy", + "sourceType": "org.springframework.cloud.gateway.filter.factory.cache.LocalResponseCacheProperties$RequestOptions", + "defaultValue": "skip-update-cache-entry", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.filter.local-response-cache.request.no-cache-strategy", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.filter.local-response-cache.size", + "type": "org.springframework.util.unit.DataSize", + "description": "Maximum size of the cache to evict entries for this route (in KB, MB and GB).", + "sourceType": "org.springframework.cloud.gateway.filter.factory.cache.LocalResponseCacheProperties", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.filter.local-response-cache.size", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.filter.local-response-cache.time-to-live", + "type": "java.time.Duration", + "description": "Time to expire a cache entry (expressed in s for seconds, m for minutes, and h for hours).", + "sourceType": "org.springframework.cloud.gateway.filter.factory.cache.LocalResponseCacheProperties", + "defaultValue": "5m", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.filter.local-response-cache.time-to-live", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.filter.map-request-header.enabled", + "type": "java.lang.Boolean", + "description": "Enables the map-request-header filter.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.filter.map-request-header.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.filter.modify-request-body.enabled", + "type": "java.lang.Boolean", + "description": "Enables the modify-request-body filter.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.filter.modify-request-body.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.filter.modify-response-body.enabled", + "type": "java.lang.Boolean", + "description": "Enables the modify-response-body filter.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.filter.modify-response-body.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.filter.prefix-path.enabled", + "type": "java.lang.Boolean", + "description": "Enables the prefix-path filter.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.filter.prefix-path.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.filter.preserve-host-header.enabled", + "type": "java.lang.Boolean", + "description": "Enables the preserve-host-header filter.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.filter.preserve-host-header.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.filter.redirect-to.enabled", + "type": "java.lang.Boolean", + "description": "Enables the redirect-to filter.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.filter.redirect-to.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.filter.remove-hop-by-hop.headers", + "type": "java.util.Set", + "sourceType": "org.springframework.cloud.gateway.filter.headers.RemoveHopByHopHeadersFilter", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.filter.remove-hop-by-hop.headers", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.filter.remove-hop-by-hop.order", + "type": "java.lang.Integer", + "sourceType": "org.springframework.cloud.gateway.filter.headers.RemoveHopByHopHeadersFilter", + "defaultValue": 0, + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.filter.remove-hop-by-hop.order", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.filter.remove-request-header.enabled", + "type": "java.lang.Boolean", + "description": "Enables the remove-request-header filter.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.filter.remove-request-header.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.filter.remove-request-parameter.enabled", + "type": "java.lang.Boolean", + "description": "Enables the remove-request-parameter filter.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.filter.remove-request-parameter.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.filter.remove-response-header.enabled", + "type": "java.lang.Boolean", + "description": "Enables the remove-response-header filter.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.filter.remove-response-header.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.filter.request-header-size.enabled", + "type": "java.lang.Boolean", + "description": "Enables the request-header-size filter.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.filter.request-header-size.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.filter.request-header-to-request-uri.enabled", + "type": "java.lang.Boolean", + "description": "Enables the request-header-to-request-uri filter.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.filter.request-header-to-request-uri.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.filter.request-rate-limiter.default-key-resolver", + "type": "org.springframework.cloud.gateway.filter.ratelimit.KeyResolver", + "sourceType": "org.springframework.cloud.gateway.filter.factory.RequestRateLimiterGatewayFilterFactory", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.filter.request-rate-limiter.default-key-resolver", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.filter.request-rate-limiter.default-rate-limiter", + "type": "org.springframework.cloud.gateway.filter.ratelimit.RateLimiter", + "sourceType": "org.springframework.cloud.gateway.filter.factory.RequestRateLimiterGatewayFilterFactory", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.filter.request-rate-limiter.default-rate-limiter", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.filter.request-rate-limiter.enabled", + "type": "java.lang.Boolean", + "description": "Enables the request-rate-limiter filter.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.filter.request-rate-limiter.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.filter.request-size.enabled", + "type": "java.lang.Boolean", + "description": "Enables the request-size filter.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.filter.request-size.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.filter.retry.enabled", + "type": "java.lang.Boolean", + "description": "Enables the retry filter.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.filter.retry.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.filter.rewrite-location-response-header.enabled", + "type": "java.lang.Boolean", + "description": "Enables the rewrite-location-response-header filter.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.filter.rewrite-location-response-header.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.filter.rewrite-location.enabled", + "type": "java.lang.Boolean", + "description": "Enables the rewrite-location filter.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.filter.rewrite-location.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.filter.rewrite-path.enabled", + "type": "java.lang.Boolean", + "description": "Enables the rewrite-path filter.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.filter.rewrite-path.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.filter.rewrite-request-parameter.enabled", + "type": "java.lang.Boolean", + "description": "Enables the rewrite-request-parameter filter.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.filter.rewrite-request-parameter.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.filter.rewrite-response-header.enabled", + "type": "java.lang.Boolean", + "description": "Enables the rewrite-response-header filter.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.filter.rewrite-response-header.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.filter.save-session.enabled", + "type": "java.lang.Boolean", + "description": "Enables the save-session filter.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.filter.save-session.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.filter.secure-headers.content-security-policy", + "type": "java.lang.String", + "sourceType": "org.springframework.cloud.gateway.filter.factory.SecureHeadersProperties", + "defaultValue": "default-src 'self' https:; font-src 'self' https: data:; img-src 'self' https: data:; object-src 'none'; script-src https:; style-src 'self' https: 'unsafe-inline'", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.filter.secure-headers.content-security-policy", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.filter.secure-headers.content-type-options", + "type": "java.lang.String", + "sourceType": "org.springframework.cloud.gateway.filter.factory.SecureHeadersProperties", + "defaultValue": "nosniff", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.filter.secure-headers.content-type-options", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.filter.secure-headers.default-headers", + "type": "java.util.Set", + "sourceType": "org.springframework.cloud.gateway.filter.factory.SecureHeadersProperties", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.filter.secure-headers.default-headers", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.filter.secure-headers.disable", + "type": "java.util.List", + "sourceType": "org.springframework.cloud.gateway.filter.factory.SecureHeadersProperties", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.filter.secure-headers.disable", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.filter.secure-headers.disabled-headers", + "type": "java.util.Set", + "sourceType": "org.springframework.cloud.gateway.filter.factory.SecureHeadersProperties", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.filter.secure-headers.disabled-headers", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.filter.secure-headers.download-options", + "type": "java.lang.String", + "sourceType": "org.springframework.cloud.gateway.filter.factory.SecureHeadersProperties", + "defaultValue": "noopen", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.filter.secure-headers.download-options", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.filter.secure-headers.enabled", + "type": "java.lang.Boolean", + "description": "Enables the secure-headers filter.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.filter.secure-headers.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.filter.secure-headers.enabled-headers", + "type": "java.util.Set", + "sourceType": "org.springframework.cloud.gateway.filter.factory.SecureHeadersProperties", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.filter.secure-headers.enabled-headers", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.filter.secure-headers.frame-options", + "type": "java.lang.String", + "sourceType": "org.springframework.cloud.gateway.filter.factory.SecureHeadersProperties", + "defaultValue": "DENY", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.filter.secure-headers.frame-options", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.filter.secure-headers.permissions-policy", + "type": "java.lang.String", + "sourceType": "org.springframework.cloud.gateway.filter.factory.SecureHeadersProperties", + "defaultValue": "accelerometer=(), ambient-light-sensor=(), autoplay=(), battery=(), camera=(), cross-origin-isolated=(), display-capture=(), document-domain=(), encrypted-media=(), execution-while-not-rendered=(), execution-while-out-of-viewport=(), fullscreen=(), geolocation=(), gyroscope=(), keyboard-map=(), magnetometer=(), microphone=(), midi=(), navigation-override=(), payment=(), picture-in-picture=(), publickey-credentials-get=(), screen-wake-lock=(), sync-xhr=(), usb=(), web-share=(), xr-spatial-tracking=()", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.filter.secure-headers.permissions-policy", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.filter.secure-headers.permitted-cross-domain-policies", + "type": "java.lang.String", + "sourceType": "org.springframework.cloud.gateway.filter.factory.SecureHeadersProperties", + "defaultValue": "none", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.filter.secure-headers.permitted-cross-domain-policies", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.filter.secure-headers.referrer-policy", + "type": "java.lang.String", + "sourceType": "org.springframework.cloud.gateway.filter.factory.SecureHeadersProperties", + "defaultValue": "no-referrer", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.filter.secure-headers.referrer-policy", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.filter.secure-headers.strict-transport-security", + "type": "java.lang.String", + "sourceType": "org.springframework.cloud.gateway.filter.factory.SecureHeadersProperties", + "defaultValue": "max-age=631138519", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.filter.secure-headers.strict-transport-security", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.filter.secure-headers.xss-protection-header", + "type": "java.lang.String", + "sourceType": "org.springframework.cloud.gateway.filter.factory.SecureHeadersProperties", + "defaultValue": "1 ; mode=block", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.filter.secure-headers.xss-protection-header", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.filter.set-path.enabled", + "type": "java.lang.Boolean", + "description": "Enables the set-path filter.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.filter.set-path.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.filter.set-request-header.enabled", + "type": "java.lang.Boolean", + "description": "Enables the set-request-header filter.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.filter.set-request-header.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.filter.set-request-host-header.enabled", + "type": "java.lang.Boolean", + "description": "Enables the set-request-host-header filter.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.filter.set-request-host-header.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.filter.set-response-header.enabled", + "type": "java.lang.Boolean", + "description": "Enables the set-response-header filter.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.filter.set-response-header.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.filter.set-status.enabled", + "type": "java.lang.Boolean", + "description": "Enables the set-status filter.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.filter.set-status.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.filter.strip-prefix.enabled", + "type": "java.lang.Boolean", + "description": "Enables the strip-prefix filter.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.filter.strip-prefix.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.forwarded.by.enabled", + "type": "java.lang.Boolean", + "description": "Enables the Forwarded: by header part.", + "defaultValue": "false", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.forwarded.by.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.forwarded.enabled", + "type": "java.lang.Boolean", + "description": "Enables the ForwardedHeadersFilter.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.forwarded.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.global-filter.adapt-cached-body.enabled", + "type": "java.lang.Boolean", + "description": "Enables the adapt-cached-body global filter.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.global-filter.adapt-cached-body.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.global-filter.forward-path.enabled", + "type": "java.lang.Boolean", + "description": "Enables the forward-path global filter.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.global-filter.forward-path.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.global-filter.forward-routing.enabled", + "type": "java.lang.Boolean", + "description": "Enables the forward-routing global filter.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.global-filter.forward-routing.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.global-filter.load-balancer-client.enabled", + "type": "java.lang.Boolean", + "description": "Enables the load-balancer-client global filter.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.global-filter.load-balancer-client.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.global-filter.local-response-cache.enabled", + "type": "java.lang.Boolean", + "description": "Enables the local-response-cache filter for all routes, it allows to add a specific configuration at route level using LocalResponseCache filter.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.global-filter.local-response-cache.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.global-filter.netty-routing.enabled", + "type": "java.lang.Boolean", + "description": "Enables the netty-routing global filter.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.global-filter.netty-routing.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.global-filter.netty-write-response.enabled", + "type": "java.lang.Boolean", + "description": "Enables the netty-write-response global filter.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.global-filter.netty-write-response.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.global-filter.reactive-load-balancer-client.enabled", + "type": "java.lang.Boolean", + "description": "Enables the reactive-load-balancer-client global filter.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.global-filter.reactive-load-balancer-client.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.global-filter.remove-cached-body.enabled", + "type": "java.lang.Boolean", + "description": "Enables the remove-cached-body global filter.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.global-filter.remove-cached-body.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.global-filter.route-to-request-url.enabled", + "type": "java.lang.Boolean", + "description": "Enables the route-to-request-url global filter.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.global-filter.route-to-request-url.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.global-filter.websocket-routing.enabled", + "type": "java.lang.Boolean", + "description": "Enables the websocket-routing global filter.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.global-filter.websocket-routing.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.globalcors.add-to-simple-url-handler-mapping", + "type": "java.lang.Boolean", + "description": "If global CORS config should be added to the URL handler.", + "defaultValue": "false", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.globalcors.add-to-simple-url-handler-mapping", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.globalcors.cors-configurations", + "type": "java.util.Map", + "sourceType": "org.springframework.cloud.gateway.config.GlobalCorsProperties", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.globalcors.cors-configurations", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.handler-mapping.order", + "type": "java.lang.Integer", + "description": "The order of RoutePredicateHandlerMapping.", + "defaultValue": "1", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.handler-mapping.order", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.httpclient.compression", + "type": "java.lang.Boolean", + "description": "Enables compression for Netty HttpClient.", + "sourceType": "org.springframework.cloud.gateway.config.HttpClientProperties", + "defaultValue": false, + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.httpclient.compression", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.httpclient.connect-timeout", + "type": "java.lang.Integer", + "description": "The connect timeout in millis, the default is 30s.", + "sourceType": "org.springframework.cloud.gateway.config.HttpClientProperties", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.httpclient.connect-timeout", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.httpclient.max-header-size", + "type": "org.springframework.util.unit.DataSize", + "description": "The max response header size.", + "sourceType": "org.springframework.cloud.gateway.config.HttpClientProperties", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.httpclient.max-header-size", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.httpclient.max-initial-line-length", + "type": "org.springframework.util.unit.DataSize", + "description": "The max initial line length.", + "sourceType": "org.springframework.cloud.gateway.config.HttpClientProperties", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.httpclient.max-initial-line-length", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.httpclient.pool.acquire-timeout", + "type": "java.lang.Long", + "description": "Only for type FIXED, the maximum time in millis to wait for acquiring.", + "sourceType": "org.springframework.cloud.gateway.config.HttpClientProperties$Pool", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.httpclient.pool.acquire-timeout", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.httpclient.pool.eviction-interval", + "type": "java.time.Duration", + "description": "Perform regular eviction checks in the background at a specified interval. Disabled by default ({@link Duration#ZERO})", + "sourceType": "org.springframework.cloud.gateway.config.HttpClientProperties$Pool", + "defaultValue": 0, + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.httpclient.pool.eviction-interval", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.httpclient.pool.leasing-strategy", + "type": "org.springframework.cloud.gateway.config.HttpClientProperties$Pool$LeasingStrategy", + "description": "Configures the leasing strategy for the pool (fifo or lifo), defaults to FIFO which is Netty's default.", + "sourceType": "org.springframework.cloud.gateway.config.HttpClientProperties$Pool", + "defaultValue": "fifo", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.httpclient.pool.leasing-strategy", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.httpclient.pool.max-connections", + "type": "java.lang.Integer", + "description": "Only for type FIXED, the maximum number of connections before starting pending acquisition on existing ones.", + "sourceType": "org.springframework.cloud.gateway.config.HttpClientProperties$Pool", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.httpclient.pool.max-connections", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.httpclient.pool.max-idle-time", + "type": "java.time.Duration", + "description": "Time in millis after which the channel will be closed. If NULL, there is no max idle time.", + "sourceType": "org.springframework.cloud.gateway.config.HttpClientProperties$Pool", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.httpclient.pool.max-idle-time", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.httpclient.pool.max-life-time", + "type": "java.time.Duration", + "description": "Duration after which the channel will be closed. If NULL, there is no max life time.", + "sourceType": "org.springframework.cloud.gateway.config.HttpClientProperties$Pool", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.httpclient.pool.max-life-time", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.httpclient.pool.metrics", + "type": "java.lang.Boolean", + "description": "Enables channel pools metrics to be collected and registered in Micrometer. Disabled by default.", + "sourceType": "org.springframework.cloud.gateway.config.HttpClientProperties$Pool", + "defaultValue": false, + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.httpclient.pool.metrics", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.httpclient.pool.name", + "type": "java.lang.String", + "description": "The channel pool map name, defaults to proxy.", + "sourceType": "org.springframework.cloud.gateway.config.HttpClientProperties$Pool", + "defaultValue": "proxy", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.httpclient.pool.name", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.httpclient.pool.type", + "type": "org.springframework.cloud.gateway.config.HttpClientProperties$Pool$PoolType", + "description": "Type of pool for HttpClient to use (elastic, fixed or disabled).", + "sourceType": "org.springframework.cloud.gateway.config.HttpClientProperties$Pool", + "defaultValue": "elastic", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.httpclient.pool.type", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.httpclient.proxy.host", + "type": "java.lang.String", + "description": "Hostname for proxy configuration of Netty HttpClient.", + "sourceType": "org.springframework.cloud.gateway.config.HttpClientProperties$Proxy", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.httpclient.proxy.host", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.httpclient.proxy.non-proxy-hosts-pattern", + "type": "java.lang.String", + "description": "Regular expression (Java) for a configured list of hosts. that should be reached directly, bypassing the proxy", + "sourceType": "org.springframework.cloud.gateway.config.HttpClientProperties$Proxy", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.httpclient.proxy.non-proxy-hosts-pattern", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.httpclient.proxy.password", + "type": "java.lang.String", + "description": "Password for proxy configuration of Netty HttpClient.", + "sourceType": "org.springframework.cloud.gateway.config.HttpClientProperties$Proxy", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.httpclient.proxy.password", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.httpclient.proxy.port", + "type": "java.lang.Integer", + "description": "Port for proxy configuration of Netty HttpClient.", + "sourceType": "org.springframework.cloud.gateway.config.HttpClientProperties$Proxy", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.httpclient.proxy.port", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.httpclient.proxy.type", + "type": "reactor.netty.transport.ProxyProvider$Proxy", + "description": "proxyType for proxy configuration of Netty HttpClient (http, socks4 or socks5).", + "sourceType": "org.springframework.cloud.gateway.config.HttpClientProperties$Proxy", + "defaultValue": "http", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.httpclient.proxy.type", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.httpclient.proxy.username", + "type": "java.lang.String", + "description": "Username for proxy configuration of Netty HttpClient.", + "sourceType": "org.springframework.cloud.gateway.config.HttpClientProperties$Proxy", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.httpclient.proxy.username", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.httpclient.response-timeout", + "type": "java.time.Duration", + "description": "The response timeout.", + "sourceType": "org.springframework.cloud.gateway.config.HttpClientProperties", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.httpclient.response-timeout", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.httpclient.ssl.close-notify-flush-timeout", + "type": "java.time.Duration", + "description": "SSL close_notify flush timeout. Default to 3000 ms.", + "sourceType": "org.springframework.cloud.gateway.config.HttpClientProperties$Ssl", + "defaultValue": "3000ms", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.httpclient.ssl.close-notify-flush-timeout", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.httpclient.ssl.close-notify-read-timeout", + "type": "java.time.Duration", + "description": "SSL close_notify read timeout. Default to 0 ms.", + "sourceType": "org.springframework.cloud.gateway.config.HttpClientProperties$Ssl", + "defaultValue": 0, + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.httpclient.ssl.close-notify-read-timeout", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.httpclient.ssl.handshake-timeout", + "type": "java.time.Duration", + "description": "SSL handshake timeout. Default to 10000 ms", + "sourceType": "org.springframework.cloud.gateway.config.HttpClientProperties$Ssl", + "defaultValue": "10000ms", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.httpclient.ssl.handshake-timeout", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.httpclient.ssl.key-password", + "type": "java.lang.String", + "description": "Key password, default is same as keyStorePassword.", + "sourceType": "org.springframework.cloud.gateway.config.HttpClientProperties$Ssl", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.httpclient.ssl.key-password", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.httpclient.ssl.key-store", + "type": "java.lang.String", + "description": "Keystore path for Netty HttpClient.", + "sourceType": "org.springframework.cloud.gateway.config.HttpClientProperties$Ssl", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.httpclient.ssl.key-store", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.httpclient.ssl.key-store-password", + "type": "java.lang.String", + "description": "Keystore password.", + "sourceType": "org.springframework.cloud.gateway.config.HttpClientProperties$Ssl", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.httpclient.ssl.key-store-password", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.httpclient.ssl.key-store-provider", + "type": "java.lang.String", + "description": "Keystore provider for Netty HttpClient, optional field.", + "sourceType": "org.springframework.cloud.gateway.config.HttpClientProperties$Ssl", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.httpclient.ssl.key-store-provider", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.httpclient.ssl.key-store-type", + "type": "java.lang.String", + "description": "Keystore type for Netty HttpClient, default is JKS.", + "sourceType": "org.springframework.cloud.gateway.config.HttpClientProperties$Ssl", + "defaultValue": "JKS", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.httpclient.ssl.key-store-type", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.httpclient.ssl.ssl-bundle", + "type": "java.lang.String", + "description": "The name of the SSL bundle to use.", + "sourceType": "org.springframework.cloud.gateway.config.HttpClientProperties$Ssl", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.httpclient.ssl.ssl-bundle", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.httpclient.ssl.trusted-x509-certificates", + "type": "java.util.List", + "description": "Trusted certificates for verifying the remote endpoint's certificate.", + "sourceType": "org.springframework.cloud.gateway.config.HttpClientProperties$Ssl", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.httpclient.ssl.trusted-x509-certificates", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.httpclient.ssl.use-insecure-trust-manager", + "type": "java.lang.Boolean", + "description": "Installs the netty InsecureTrustManagerFactory. This is insecure and not suitable for production.", + "sourceType": "org.springframework.cloud.gateway.config.HttpClientProperties$Ssl", + "defaultValue": false, + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.httpclient.ssl.use-insecure-trust-manager", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.httpclient.websocket.max-frame-payload-length", + "type": "java.lang.Integer", + "description": "Max frame payload length.", + "sourceType": "org.springframework.cloud.gateway.config.HttpClientProperties$Websocket", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.httpclient.websocket.max-frame-payload-length", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.httpclient.websocket.proxy-ping", + "type": "java.lang.Boolean", + "description": "Proxy ping frames to downstream services, defaults to true.", + "sourceType": "org.springframework.cloud.gateway.config.HttpClientProperties$Websocket", + "defaultValue": true, + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.httpclient.websocket.proxy-ping", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.httpclient.wiretap", + "type": "java.lang.Boolean", + "description": "Enables wiretap debugging for Netty HttpClient.", + "sourceType": "org.springframework.cloud.gateway.config.HttpClientProperties", + "defaultValue": false, + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.httpclient.wiretap", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.httpserver.wiretap", + "type": "java.lang.Boolean", + "description": "Enables wiretap debugging for Netty HttpServer.", + "defaultValue": "false", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.httpserver.wiretap", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.loadbalancer.use404", + "type": "java.lang.Boolean", + "sourceType": "org.springframework.cloud.gateway.config.GatewayLoadBalancerProperties", + "defaultValue": false, + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.loadbalancer.use404", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.metrics.enabled", + "type": "java.lang.Boolean", + "description": "Enables the collection of metrics data.", + "sourceType": "org.springframework.cloud.gateway.config.GatewayMetricsProperties", + "defaultValue": false, + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.metrics.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.metrics.prefix", + "type": "java.lang.String", + "description": "The prefix of all metrics emitted by gateway.", + "sourceType": "org.springframework.cloud.gateway.config.GatewayMetricsProperties", + "defaultValue": "spring.cloud.gateway", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.metrics.prefix", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.metrics.tags", + "type": "java.util.Map", + "description": "Tags map that added to metrics.", + "sourceType": "org.springframework.cloud.gateway.config.GatewayMetricsProperties", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.metrics.tags", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.mvc.routes", + "type": "java.util.List", + "description": "List of Routes.", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.mvc.routes", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.observability.enabled", + "type": "java.lang.Boolean", + "description": "If Micrometer Observability support should be turned on.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.observability.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.predicate.after.enabled", + "type": "java.lang.Boolean", + "description": "Enables the after predicate.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.predicate.after.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.predicate.before.enabled", + "type": "java.lang.Boolean", + "description": "Enables the before predicate.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.predicate.before.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.predicate.between.enabled", + "type": "java.lang.Boolean", + "description": "Enables the between predicate.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.predicate.between.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.predicate.cloud-foundry-route-service.enabled", + "type": "java.lang.Boolean", + "description": "Enables the cloud-foundry-route-service predicate.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.predicate.cloud-foundry-route-service.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.predicate.cookie.enabled", + "type": "java.lang.Boolean", + "description": "Enables the cookie predicate.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.predicate.cookie.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.predicate.header.enabled", + "type": "java.lang.Boolean", + "description": "Enables the header predicate.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.predicate.header.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.predicate.host.enabled", + "type": "java.lang.Boolean", + "description": "Enables the host predicate.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.predicate.host.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.predicate.host.include-port", + "type": "java.lang.Boolean", + "description": "Include the port in matching the host name.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.predicate.host.include-port", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.predicate.method.enabled", + "type": "java.lang.Boolean", + "description": "Enables the method predicate.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.predicate.method.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.predicate.path.enabled", + "type": "java.lang.Boolean", + "description": "Enables the path predicate.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.predicate.path.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.predicate.query.enabled", + "type": "java.lang.Boolean", + "description": "Enables the query predicate.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.predicate.query.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.predicate.read-body.enabled", + "type": "java.lang.Boolean", + "description": "Enables the read-body predicate.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.predicate.read-body.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.predicate.remote-addr.enabled", + "type": "java.lang.Boolean", + "description": "Enables the remote-addr predicate.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.predicate.remote-addr.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.predicate.weight.enabled", + "type": "java.lang.Boolean", + "description": "Enables the weight predicate.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.predicate.weight.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.predicate.xforwarded-remote-addr.enabled", + "type": "java.lang.Boolean", + "description": "Enables the xforwarded-remote-addr predicate.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.predicate.xforwarded-remote-addr.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.redis-rate-limiter.burst-capacity-header", + "type": "java.lang.String", + "description": "The name of the header that returns the burst capacity configuration.", + "sourceType": "org.springframework.cloud.gateway.filter.ratelimit.RedisRateLimiter", + "defaultValue": "X-RateLimit-Burst-Capacity", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.redis-rate-limiter.burst-capacity-header", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.redis-rate-limiter.config", + "type": "java.util.Map", + "sourceType": "org.springframework.cloud.gateway.filter.ratelimit.RedisRateLimiter", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.redis-rate-limiter.config", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.redis-rate-limiter.include-headers", + "type": "java.lang.Boolean", + "description": "Whether or not to include headers containing rate limiter information, defaults to true.", + "sourceType": "org.springframework.cloud.gateway.filter.ratelimit.RedisRateLimiter", + "defaultValue": true, + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.redis-rate-limiter.include-headers", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.redis-rate-limiter.remaining-header", + "type": "java.lang.String", + "description": "The name of the header that returns number of remaining requests during the current second.", + "sourceType": "org.springframework.cloud.gateway.filter.ratelimit.RedisRateLimiter", + "defaultValue": "X-RateLimit-Remaining", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.redis-rate-limiter.remaining-header", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.redis-rate-limiter.replenish-rate-header", + "type": "java.lang.String", + "description": "The name of the header that returns the replenish rate configuration.", + "sourceType": "org.springframework.cloud.gateway.filter.ratelimit.RedisRateLimiter", + "defaultValue": "X-RateLimit-Replenish-Rate", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.redis-rate-limiter.replenish-rate-header", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.redis-rate-limiter.requested-tokens-header", + "type": "java.lang.String", + "description": "The name of the header that returns the requested tokens configuration.", + "sourceType": "org.springframework.cloud.gateway.filter.ratelimit.RedisRateLimiter", + "defaultValue": "X-RateLimit-Requested-Tokens", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.redis-rate-limiter.requested-tokens-header", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.redis-route-definition-repository.enabled", + "type": "java.lang.Boolean", + "description": "If RedisRouteDefinitionRepository should be enabled.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.redis-route-definition-repository.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.restrictive-property-accessor.enabled", + "type": "java.lang.Boolean", + "description": "Restricts method and property access in SpEL.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.restrictive-property-accessor.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.route-filter-cache-enabled", + "type": "java.lang.Boolean", + "description": "Enables the route filter cache, defaults to false.", + "sourceType": "org.springframework.cloud.gateway.config.GatewayProperties", + "defaultValue": false, + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.route-filter-cache-enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.route-refresh-listener.enabled", + "type": "java.lang.Boolean", + "description": "If RouteRefreshListener should be turned on.", + "defaultValue": "true", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.route-refresh-listener.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.routes", + "type": "java.util.List", + "description": "List of Routes.", + "sourceType": "org.springframework.cloud.gateway.config.GatewayProperties", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.routes", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.set-status.original-status-header-name", + "type": "java.lang.String", + "description": "The name of the header which contains http code of the proxied request.", + "sourceType": "org.springframework.cloud.gateway.filter.factory.SetStatusGatewayFilterFactory", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.set-status.original-status-header-name", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.streaming-media-types", + "type": "java.util.List", + "sourceType": "org.springframework.cloud.gateway.config.GatewayProperties", + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.streaming-media-types", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.x-forwarded.enabled", + "type": "java.lang.Boolean", + "description": "If the XForwardedHeadersFilter is enabled.", + "sourceType": "org.springframework.cloud.gateway.filter.headers.XForwardedHeadersFilter", + "defaultValue": true, + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.x-forwarded.enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.x-forwarded.for-append", + "type": "java.lang.Boolean", + "description": "If appending X-Forwarded-For as a list is enabled.", + "sourceType": "org.springframework.cloud.gateway.filter.headers.XForwardedHeadersFilter", + "defaultValue": true, + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.x-forwarded.for-append", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.x-forwarded.for-enabled", + "type": "java.lang.Boolean", + "description": "If X-Forwarded-For is enabled.", + "sourceType": "org.springframework.cloud.gateway.filter.headers.XForwardedHeadersFilter", + "defaultValue": true, + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.x-forwarded.for-enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.x-forwarded.host-append", + "type": "java.lang.Boolean", + "description": "If appending X-Forwarded-Host as a list is enabled.", + "sourceType": "org.springframework.cloud.gateway.filter.headers.XForwardedHeadersFilter", + "defaultValue": true, + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.x-forwarded.host-append", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.x-forwarded.host-enabled", + "type": "java.lang.Boolean", + "description": "If X-Forwarded-Host is enabled.", + "sourceType": "org.springframework.cloud.gateway.filter.headers.XForwardedHeadersFilter", + "defaultValue": true, + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.x-forwarded.host-enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.x-forwarded.order", + "type": "java.lang.Integer", + "description": "The order of the XForwardedHeadersFilter.", + "sourceType": "org.springframework.cloud.gateway.filter.headers.XForwardedHeadersFilter", + "defaultValue": 0, + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.x-forwarded.order", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.x-forwarded.port-append", + "type": "java.lang.Boolean", + "description": "If appending X-Forwarded-Port as a list is enabled.", + "sourceType": "org.springframework.cloud.gateway.filter.headers.XForwardedHeadersFilter", + "defaultValue": true, + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.x-forwarded.port-append", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.x-forwarded.port-enabled", + "type": "java.lang.Boolean", + "description": "If X-Forwarded-Port is enabled.", + "sourceType": "org.springframework.cloud.gateway.filter.headers.XForwardedHeadersFilter", + "defaultValue": true, + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.x-forwarded.port-enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.x-forwarded.prefix-append", + "type": "java.lang.Boolean", + "description": "If appending X-Forwarded-Prefix as a list is enabled.", + "sourceType": "org.springframework.cloud.gateway.filter.headers.XForwardedHeadersFilter", + "defaultValue": true, + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.x-forwarded.prefix-append", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.x-forwarded.prefix-enabled", + "type": "java.lang.Boolean", + "description": "If X-Forwarded-Prefix is enabled.", + "sourceType": "org.springframework.cloud.gateway.filter.headers.XForwardedHeadersFilter", + "defaultValue": true, + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.x-forwarded.prefix-enabled", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.x-forwarded.proto-append", + "type": "java.lang.Boolean", + "description": "If appending X-Forwarded-Proto as a list is enabled.", + "sourceType": "org.springframework.cloud.gateway.filter.headers.XForwardedHeadersFilter", + "defaultValue": true, + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.x-forwarded.proto-append", + "since": "4.3.0" + } + }, + { + "name": "spring.cloud.gateway.x-forwarded.proto-enabled", + "type": "java.lang.Boolean", + "description": "If X-Forwarded-Proto is enabled.", + "sourceType": "org.springframework.cloud.gateway.filter.headers.XForwardedHeadersFilter", + "defaultValue": true, + "deprecated": true, + "deprecation": { + "replacement": "spring.cloud.gateway.server.webflux.x-forwarded.proto-enabled", + "since": "4.3.0" + } } ] } diff --git a/spring-cloud-gateway-server/src/main/resources/META-INF/spring.factories b/spring-cloud-gateway-server/src/main/resources/META-INF/spring.factories index dd7e5a51ea..38fc41667b 100644 --- a/spring-cloud-gateway-server/src/main/resources/META-INF/spring.factories +++ b/spring-cloud-gateway-server/src/main/resources/META-INF/spring.factories @@ -3,4 +3,8 @@ org.springframework.cloud.gateway.config.GatewayEnvironmentPostProcessor # Failure Analyzers org.springframework.boot.diagnostics.FailureAnalyzer=\ -org.springframework.cloud.gateway.support.MvcFoundOnClasspathFailureAnalyzer \ No newline at end of file +org.springframework.cloud.gateway.support.MvcFoundOnClasspathFailureAnalyzer + +# Application Listeners +org.springframework.context.ApplicationListener=\ + org.springframework.cloud.gateway.config.GatewayServerWebfluxPropertiesMigrationListener \ No newline at end of file diff --git a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/config/GatewayAutoConfigurationTests.java b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/config/GatewayAutoConfigurationTests.java index 34fdd03236..0e1445dd69 100644 --- a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/config/GatewayAutoConfigurationTests.java +++ b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/config/GatewayAutoConfigurationTests.java @@ -118,19 +118,20 @@ public void nettyHttpClientConfigured() { .withConfiguration(AutoConfigurations.of(WebFluxAutoConfiguration.class, MetricsAutoConfiguration.class, SimpleMetricsExportAutoConfiguration.class, GatewayAutoConfiguration.class, HttpClientCustomizedConfig.class, ServerPropertiesConfig.class)) - .withPropertyValues("spring.cloud.gateway.httpclient.ssl.use-insecure-trust-manager=true", - "spring.cloud.gateway.httpclient.ssl.ssl-bundle=mybundle", - "spring.cloud.gateway.httpclient.connect-timeout=10", - "spring.cloud.gateway.httpclient.response-timeout=10s", - "spring.cloud.gateway.httpclient.pool.eviction-interval=10s", - "spring.cloud.gateway.httpclient.pool.type=fixed", - "spring.cloud.gateway.httpclient.pool.metrics=true", - "spring.cloud.gateway.httpclient.pool.leasing-strategy=lifo", - "spring.cloud.gateway.httpclient.compression=true", "spring.cloud.gateway.httpclient.wiretap=true", + .withPropertyValues("spring.cloud.gateway.server.webflux.httpclient.ssl.use-insecure-trust-manager=true", + "spring.cloud.gateway.server.webflux.httpclient.ssl.ssl-bundle=mybundle", + "spring.cloud.gateway.server.webflux.httpclient.connect-timeout=10", + "spring.cloud.gateway.server.webflux.httpclient.response-timeout=10s", + "spring.cloud.gateway.server.webflux.httpclient.pool.eviction-interval=10s", + "spring.cloud.gateway.server.webflux.httpclient.pool.type=fixed", + "spring.cloud.gateway.server.webflux.httpclient.pool.metrics=true", + "spring.cloud.gateway.server.webflux.httpclient.pool.leasing-strategy=lifo", + "spring.cloud.gateway.server.webflux.httpclient.compression=true", + "spring.cloud.gateway.server.webflux.httpclient.wiretap=true", // greater than integer max value - "spring.cloud.gateway.httpclient.max-initial-line-length=2147483647", - "spring.cloud.gateway.httpclient.proxy.host=myhost", - "spring.cloud.gateway.httpclient.websocket.max-frame-payload-length=1024") + "spring.cloud.gateway.server.webflux.httpclient.max-initial-line-length=2147483647", + "spring.cloud.gateway.server.webflux.httpclient.proxy.host=myhost", + "spring.cloud.gateway.server.webflux.httpclient.websocket.max-frame-payload-length=1024") .run(context -> { assertThat(context).hasSingleBean(HttpClient.class); HttpClient httpClient = context.getBean(HttpClient.class); @@ -185,7 +186,7 @@ public void verboseActuatorEnabledByDefault() { @Test public void verboseActuatorDisabled() { try (ConfigurableApplicationContext ctx = SpringApplication.run(Config.class, "--spring.jmx.enabled=false", - "--server.port=0", "--spring.cloud.gateway.actuator.verbose.enabled=false", + "--server.port=0", "--spring.cloud.gateway.server.webflux.actuator.verbose.enabled=false", "--management.endpoint.gateway.enabled=true")) { assertThat(ctx.getBeanNamesForType(GatewayLegacyControllerEndpoint.class)).hasSize(1); } @@ -233,7 +234,8 @@ public void reactiveOAuth2AuthorizedClientManagerBacksOffForCustomBean() { public void noTokenRelayFilter() { assertThatThrownBy(() -> { try (ConfigurableApplicationContext ctx = SpringApplication.run(RouteLocatorBuilderConfig.class, - "--spring.jmx.enabled=false", "--spring.cloud.gateway.filter.token-relay.enabled=false", + "--spring.jmx.enabled=false", + "--spring.cloud.gateway.server.webflux.filter.token-relay.enabled=false", "--spring.security.oauth2.client.provider[testprovider].authorization-uri=http://localhost", "--spring.security.oauth2.client.provider[testprovider].token-uri=http://localhost/token", "--spring.security.oauth2.client.registration[test].provider=testprovider", diff --git a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/config/GatewayMetricsAutoConfigurationTests.java b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/config/GatewayMetricsAutoConfigurationTests.java index d8e71d86d8..e06d722661 100644 --- a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/config/GatewayMetricsAutoConfigurationTests.java +++ b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/config/GatewayMetricsAutoConfigurationTests.java @@ -88,7 +88,7 @@ public void observabilityBeansExist() { } @Nested - @SpringBootTest(classes = Config.class, properties = "spring.cloud.gateway.metrics.enabled=false") + @SpringBootTest(classes = Config.class, properties = GatewayProperties.PREFIX + ".metrics.enabled=false") public class DisabledByProperty { @Autowired(required = false) @@ -110,7 +110,7 @@ public void routeDefinitionMetricsBeanMissing() { } @Nested - @SpringBootTest(classes = Config.class, properties = "spring.cloud.gateway.observability.enabled=false") + @SpringBootTest(classes = Config.class, properties = GatewayProperties.PREFIX + ".observability.enabled=false") public class ObservabilityDisabledByProperty { @Autowired diff --git a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/config/GatewayPropertiesMigrationTests.java b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/config/GatewayPropertiesMigrationTests.java new file mode 100644 index 0000000000..9cb9c4d001 --- /dev/null +++ b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/config/GatewayPropertiesMigrationTests.java @@ -0,0 +1,71 @@ +/* + * Copyright 2013-2025 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.gateway.config; + +import org.junit.jupiter.api.Test; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.SpringBootConfiguration; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; +import org.springframework.cloud.gateway.filter.factory.AddRequestParameterGatewayFilterFactory; +import org.springframework.cloud.gateway.filter.headers.ForwardedHeadersFilter; +import org.springframework.cloud.gateway.filter.headers.XForwardedHeadersFilter; +import org.springframework.cloud.gateway.handler.predicate.AfterRoutePredicateFactory; +import org.springframework.cloud.gateway.route.RouteRefreshListener; +import org.springframework.context.ApplicationContext; +import org.springframework.test.context.ActiveProfiles; + +import static org.assertj.core.api.Assertions.assertThat; + +@SuppressWarnings("unchecked") +@SpringBootTest(properties = { "debug=true" }, webEnvironment = WebEnvironment.RANDOM_PORT) +@ActiveProfiles("propertiesmigrationtests") +public class GatewayPropertiesMigrationTests { + + @Autowired + ApplicationContext context; + + @Autowired + GatewayProperties properties; + + @Test + public void deprecatedPropertiesWork() { + assertBeanDoesNotExist(AddRequestParameterGatewayFilterFactory.class); + assertBeanDoesNotExist(AfterRoutePredicateFactory.class); + assertBeanDoesNotExist(ForwardedHeadersFilter.class); + assertBeanDoesNotExist(RouteRefreshListener.class); + assertBeanDoesNotExist(XForwardedHeadersFilter.class); + } + + @Test + public void deprecatedRoutePropertiesWork() { + assertThat(properties.getRoutes()).hasSize(2); + } + + private void assertBeanDoesNotExist(Class type) { + assertThat(context.getBeanNamesForType(type)).isEmpty(); + } + + @SpringBootConfiguration + @EnableAutoConfiguration + protected static class TestConfiguration { + + } + +} diff --git a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/config/GatewayRedisAutoConfigurationTests.java b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/config/GatewayRedisAutoConfigurationTests.java index a3a1b6ceda..660284707e 100644 --- a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/config/GatewayRedisAutoConfigurationTests.java +++ b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/config/GatewayRedisAutoConfigurationTests.java @@ -75,7 +75,7 @@ public void shouldInjectRedisBeans() { } @Nested - @SpringBootTest(classes = Config.class, properties = "spring.cloud.gateway.redis.enabled=false") + @SpringBootTest(classes = Config.class, properties = GatewayProperties.PREFIX + ".redis.enabled=false") class DisabledByProperty { @Autowired(required = false) @@ -97,7 +97,7 @@ public void shouldDisableRedisBeans() { */ @Nested @SpringBootTest(classes = GatewayRedisAutoConfigurationTests.Config.class, - properties = "spring.cloud.gateway.redis-route-definition-repository.enabled=false") + properties = GatewayProperties.PREFIX + ".redis-route-definition-repository.enabled=false") @DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD) class RedisRouteDefinitionRepositoryDisabledByProperty { diff --git a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/config/GatewayRedisRouteDefinitionRepositoryEnabledByPropertyTests.java b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/config/GatewayRedisRouteDefinitionRepositoryEnabledByPropertyTests.java index ccf240e82d..232d6e93ab 100644 --- a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/config/GatewayRedisRouteDefinitionRepositoryEnabledByPropertyTests.java +++ b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/config/GatewayRedisRouteDefinitionRepositoryEnabledByPropertyTests.java @@ -33,7 +33,7 @@ import static org.assertj.core.api.Assertions.assertThat; @SpringBootTest(classes = GatewayRedisAutoConfigurationTests.Config.class, - properties = "spring.cloud.gateway.redis-route-definition-repository.enabled=true") + properties = GatewayProperties.PREFIX + ".redis-route-definition-repository.enabled=true") @DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD) @Testcontainers @Tag("DockerRequired") diff --git a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/config/LocalResponseCacheAutoConfigurationTests.java b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/config/LocalResponseCacheAutoConfigurationTests.java index e0aee8cfcb..8b61ae2738 100644 --- a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/config/LocalResponseCacheAutoConfigurationTests.java +++ b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/config/LocalResponseCacheAutoConfigurationTests.java @@ -33,7 +33,7 @@ public class LocalResponseCacheAutoConfigurationTests { void onlyOneCacheManagerBeanCreated() { new ApplicationContextRunner() .withConfiguration(AutoConfigurations.of(LocalResponseCacheAutoConfiguration.class)) - .withPropertyValues("spring.cloud.gateway.filter.local-response-cache.enabled=true") + .withPropertyValues(GatewayProperties.PREFIX + ".filter.local-response-cache.enabled=true") .run(context -> { context.containsBean(LocalResponseCacheAutoConfiguration.RESPONSE_CACHE_MANAGER_NAME); context.assertThat().hasSingleBean(GlobalLocalResponseCacheGatewayFilter.class); @@ -45,7 +45,7 @@ void twoCacheManagerBeans() { new ApplicationContextRunner() .withConfiguration( AutoConfigurations.of(CustomCacheManagerConfig.class, LocalResponseCacheAutoConfiguration.class)) - .withPropertyValues("spring.cloud.gateway.filter.local-response-cache.enabled=true") + .withPropertyValues(GatewayProperties.PREFIX + ".filter.local-response-cache.enabled=true") .run(context -> { context.containsBean(LocalResponseCacheAutoConfiguration.RESPONSE_CACHE_MANAGER_NAME); context.containsBean("myCacheManager"); diff --git a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/config/conditional/DisableBuiltInFiltersTests.java b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/config/conditional/DisableBuiltInFiltersTests.java index 2669059d38..b581dfa0e6 100644 --- a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/config/conditional/DisableBuiltInFiltersTests.java +++ b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/config/conditional/DisableBuiltInFiltersTests.java @@ -56,8 +56,8 @@ public void shouldInjectBuiltInFilters() { @Nested @SpringBootTest(classes = Config.class, - properties = { "spring.cloud.gateway.filter.add-request-header.enabled=false", - "spring.cloud.gateway.filter.map-request-header.enabled=false" }) + properties = { "spring.cloud.gateway.server.webflux.filter.add-request-header.enabled=false", + "spring.cloud.gateway.server.webflux.filter.map-request-header.enabled=false" }) @ActiveProfiles("disable-components") public class DisableSpecificsFiltersByProperty { @@ -76,45 +76,45 @@ public void shouldInjectOnlyEnabledBuiltInFilters() { @Nested @SpringBootTest(classes = Config.class, - properties = { "spring.cloud.gateway.filter.add-request-header.enabled=false", - "spring.cloud.gateway.filter.map-request-header.enabled=false", - "spring.cloud.gateway.filter.add-request-headers-if-not-present.enabled=false", - "spring.cloud.gateway.filter.add-request-parameter.enabled=false", - "spring.cloud.gateway.filter.add-response-header.enabled=false", - "spring.cloud.gateway.filter.json-to-grpc.enabled=false", - "spring.cloud.gateway.filter.modify-request-body.enabled=false", - "spring.cloud.gateway.filter.local-response-cache.enabled=false", - "spring.cloud.gateway.filter.dedupe-response-header.enabled=false", - "spring.cloud.gateway.filter.modify-response-body.enabled=false", - "spring.cloud.gateway.filter.prefix-path.enabled=false", - "spring.cloud.gateway.filter.preserve-host-header.enabled=false", - "spring.cloud.gateway.filter.redirect-to.enabled=false", - "spring.cloud.gateway.filter.remove-json-attributes-response-body.enabled=false", - "spring.cloud.gateway.filter.remove-request-header.enabled=false", - "spring.cloud.gateway.filter.remove-request-parameter.enabled=false", - "spring.cloud.gateway.filter.remove-response-header.enabled=false", - "spring.cloud.gateway.filter.request-rate-limiter.enabled=false", - "spring.cloud.gateway.filter.rewrite-path.enabled=false", - "spring.cloud.gateway.filter.retry.enabled=false", - "spring.cloud.gateway.filter.set-path.enabled=false", - "spring.cloud.gateway.filter.secure-headers.enabled=false", - "spring.cloud.gateway.filter.set-request-header.enabled=false", - "spring.cloud.gateway.filter.set-request-host-header.enabled=false", - "spring.cloud.gateway.filter.set-response-header.enabled=false", - "spring.cloud.gateway.filter.rewrite-response-header.enabled=false", - "spring.cloud.gateway.filter.rewrite-location-response-header.enabled=false", - "spring.cloud.gateway.filter.rewrite-location.enabled=false", - "spring.cloud.gateway.filter.rewrite-request-parameter.enabled=false", - "spring.cloud.gateway.filter.set-status.enabled=false", - "spring.cloud.gateway.filter.save-session.enabled=false", - "spring.cloud.gateway.filter.strip-prefix.enabled=false", - "spring.cloud.gateway.filter.request-header-to-request-uri.enabled=false", - "spring.cloud.gateway.filter.request-size.enabled=false", - "spring.cloud.gateway.filter.request-header-size.enabled=false", - "spring.cloud.gateway.filter.circuit-breaker.enabled=false", - "spring.cloud.gateway.filter.token-relay.enabled=false", - "spring.cloud.gateway.filter.cache-request-body.enabled=false", - "spring.cloud.gateway.filter.fallback-headers.enabled=false" }) + properties = { "spring.cloud.gateway.server.webflux.filter.add-request-header.enabled=false", + "spring.cloud.gateway.server.webflux.filter.map-request-header.enabled=false", + "spring.cloud.gateway.server.webflux.filter.add-request-headers-if-not-present.enabled=false", + "spring.cloud.gateway.server.webflux.filter.add-request-parameter.enabled=false", + "spring.cloud.gateway.server.webflux.filter.add-response-header.enabled=false", + "spring.cloud.gateway.server.webflux.filter.json-to-grpc.enabled=false", + "spring.cloud.gateway.server.webflux.filter.modify-request-body.enabled=false", + "spring.cloud.gateway.server.webflux.filter.local-response-cache.enabled=false", + "spring.cloud.gateway.server.webflux.filter.dedupe-response-header.enabled=false", + "spring.cloud.gateway.server.webflux.filter.modify-response-body.enabled=false", + "spring.cloud.gateway.server.webflux.filter.prefix-path.enabled=false", + "spring.cloud.gateway.server.webflux.filter.preserve-host-header.enabled=false", + "spring.cloud.gateway.server.webflux.filter.redirect-to.enabled=false", + "spring.cloud.gateway.server.webflux.filter.remove-json-attributes-response-body.enabled=false", + "spring.cloud.gateway.server.webflux.filter.remove-request-header.enabled=false", + "spring.cloud.gateway.server.webflux.filter.remove-request-parameter.enabled=false", + "spring.cloud.gateway.server.webflux.filter.remove-response-header.enabled=false", + "spring.cloud.gateway.server.webflux.filter.request-rate-limiter.enabled=false", + "spring.cloud.gateway.server.webflux.filter.rewrite-path.enabled=false", + "spring.cloud.gateway.server.webflux.filter.retry.enabled=false", + "spring.cloud.gateway.server.webflux.filter.set-path.enabled=false", + "spring.cloud.gateway.server.webflux.filter.secure-headers.enabled=false", + "spring.cloud.gateway.server.webflux.filter.set-request-header.enabled=false", + "spring.cloud.gateway.server.webflux.filter.set-request-host-header.enabled=false", + "spring.cloud.gateway.server.webflux.filter.set-response-header.enabled=false", + "spring.cloud.gateway.server.webflux.filter.rewrite-response-header.enabled=false", + "spring.cloud.gateway.server.webflux.filter.rewrite-location-response-header.enabled=false", + "spring.cloud.gateway.server.webflux.filter.rewrite-location.enabled=false", + "spring.cloud.gateway.server.webflux.filter.rewrite-request-parameter.enabled=false", + "spring.cloud.gateway.server.webflux.filter.set-status.enabled=false", + "spring.cloud.gateway.server.webflux.filter.save-session.enabled=false", + "spring.cloud.gateway.server.webflux.filter.strip-prefix.enabled=false", + "spring.cloud.gateway.server.webflux.filter.request-header-to-request-uri.enabled=false", + "spring.cloud.gateway.server.webflux.filter.request-size.enabled=false", + "spring.cloud.gateway.server.webflux.filter.request-header-size.enabled=false", + "spring.cloud.gateway.server.webflux.filter.circuit-breaker.enabled=false", + "spring.cloud.gateway.server.webflux.filter.token-relay.enabled=false", + "spring.cloud.gateway.server.webflux.filter.cache-request-body.enabled=false", + "spring.cloud.gateway.server.webflux.filter.fallback-headers.enabled=false" }) @ActiveProfiles("disable-components") public class DisableAllFiltersByProperty { diff --git a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/config/conditional/DisableBuiltInGlobalFiltersTests.java b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/config/conditional/DisableBuiltInGlobalFiltersTests.java index 95217bab2c..519ea449b2 100644 --- a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/config/conditional/DisableBuiltInGlobalFiltersTests.java +++ b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/config/conditional/DisableBuiltInGlobalFiltersTests.java @@ -56,8 +56,8 @@ public void shouldInjectBuiltInFilters() { @Nested @SpringBootTest(classes = Config.class, - properties = { "spring.cloud.gateway.global-filter.remove-cached-body.enabled=false", - "spring.cloud.gateway.global-filter.route-to-request-url.enabled=false" }) + properties = { "spring.cloud.gateway.server.webflux.global-filter.remove-cached-body.enabled=false", + "spring.cloud.gateway.server.webflux.global-filter.route-to-request-url.enabled=false" }) @ActiveProfiles("disable-components") public class DisableSpecificsFiltersByProperty { @@ -74,21 +74,21 @@ public void shouldInjectOnlyEnabledBuiltInFilters() { } @Nested - @SpringBootTest(classes = Config.class, - properties = { "spring.cloud.gateway.global-filter.adapt-cached-body.enabled=false", - "spring.cloud.gateway.global-filter.remove-cached-body.enabled=false", - "spring.cloud.gateway.global-filter.route-to-request-url.enabled=false", - "spring.cloud.gateway.global-filter.forward-routing.enabled=false", - "spring.cloud.gateway.global-filter.forward-path.enabled=false", - "spring.cloud.gateway.global-filter.websocket-routing.enabled=false", - "spring.cloud.gateway.global-filter.netty-write-response.enabled=false", - "spring.cloud.gateway.global-filter.netty-routing.enabled=false", - "spring.cloud.gateway.global-filter.reactive-load-balancer-client.enabled=false", - "spring.cloud.gateway.global-filter.load-balancer-client.enabled=false", - "spring.cloud.gateway.global-filter.load-balancer-service-instance-cookie.enabled=false", - "spring.cloud.gateway.global-filter.function-routing.enabled=false", - "spring.cloud.gateway.global-filter.stream-routing.enabled=false", - "spring.cloud.gateway.metrics.enabled=false" }) + @SpringBootTest(classes = Config.class, properties = { + "spring.cloud.gateway.server.webflux.global-filter.adapt-cached-body.enabled=false", + "spring.cloud.gateway.server.webflux.global-filter.remove-cached-body.enabled=false", + "spring.cloud.gateway.server.webflux.global-filter.route-to-request-url.enabled=false", + "spring.cloud.gateway.server.webflux.global-filter.forward-routing.enabled=false", + "spring.cloud.gateway.server.webflux.global-filter.forward-path.enabled=false", + "spring.cloud.gateway.server.webflux.global-filter.websocket-routing.enabled=false", + "spring.cloud.gateway.server.webflux.global-filter.netty-write-response.enabled=false", + "spring.cloud.gateway.server.webflux.global-filter.netty-routing.enabled=false", + "spring.cloud.gateway.server.webflux.global-filter.reactive-load-balancer-client.enabled=false", + "spring.cloud.gateway.server.webflux.global-filter.load-balancer-client.enabled=false", + "spring.cloud.gateway.server.webflux.global-filter.load-balancer-service-instance-cookie.enabled=false", + "spring.cloud.gateway.server.webflux.global-filter.function-routing.enabled=false", + "spring.cloud.gateway.server.webflux.global-filter.stream-routing.enabled=false", + "spring.cloud.gateway.server.webflux.metrics.enabled=false" }) @ActiveProfiles("disable-components") public class DisableAllGlobalFiltersByProperty { diff --git a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/config/conditional/DisableBuiltInPredicatesTests.java b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/config/conditional/DisableBuiltInPredicatesTests.java index e5871bd9e2..1e0a44535b 100644 --- a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/config/conditional/DisableBuiltInPredicatesTests.java +++ b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/config/conditional/DisableBuiltInPredicatesTests.java @@ -56,8 +56,8 @@ public void shouldInjectBuiltInPredicates() { @Nested @SpringBootTest(classes = Config.class, - properties = { "spring.cloud.gateway.predicate.after.enabled=false", - "spring.cloud.gateway.predicate.before.enabled=false" }) + properties = { "spring.cloud.gateway.server.webflux.predicate.after.enabled=false", + "spring.cloud.gateway.server.webflux.predicate.before.enabled=false" }) @ActiveProfiles("disable-components") public class DisableSpecificsPredicatesByProperty { @@ -74,18 +74,21 @@ public void shouldInjectOnlyEnabledBuiltInPredicates() { } @Nested - @SpringBootTest(classes = Config.class, properties = { "spring.cloud.gateway.predicate.after.enabled=false", - "spring.cloud.gateway.predicate.before.enabled=false", - "spring.cloud.gateway.predicate.between.enabled=false", - "spring.cloud.gateway.predicate.cookie.enabled=false", - "spring.cloud.gateway.predicate.header.enabled=false", "spring.cloud.gateway.predicate.host.enabled=false", - "spring.cloud.gateway.predicate.method.enabled=false", "spring.cloud.gateway.predicate.path.enabled=false", - "spring.cloud.gateway.predicate.query.enabled=false", - "spring.cloud.gateway.predicate.read-body.enabled=false", - "spring.cloud.gateway.predicate.remote-addr.enabled=false", - "spring.cloud.gateway.predicate.xforwarded-remote-addr.enabled=false", - "spring.cloud.gateway.predicate.weight.enabled=false", - "spring.cloud.gateway.predicate.cloud-foundry-route-service.enabled=false" }) + @SpringBootTest(classes = Config.class, + properties = { "spring.cloud.gateway.server.webflux.predicate.after.enabled=false", + "spring.cloud.gateway.server.webflux.predicate.before.enabled=false", + "spring.cloud.gateway.server.webflux.predicate.between.enabled=false", + "spring.cloud.gateway.server.webflux.predicate.cookie.enabled=false", + "spring.cloud.gateway.server.webflux.predicate.header.enabled=false", + "spring.cloud.gateway.server.webflux.predicate.host.enabled=false", + "spring.cloud.gateway.server.webflux.predicate.method.enabled=false", + "spring.cloud.gateway.server.webflux.predicate.path.enabled=false", + "spring.cloud.gateway.server.webflux.predicate.query.enabled=false", + "spring.cloud.gateway.server.webflux.predicate.read-body.enabled=false", + "spring.cloud.gateway.server.webflux.predicate.remote-addr.enabled=false", + "spring.cloud.gateway.server.webflux.predicate.xforwarded-remote-addr.enabled=false", + "spring.cloud.gateway.server.webflux.predicate.weight.enabled=false", + "spring.cloud.gateway.server.webflux.predicate.cloud-foundry-route-service.enabled=false" }) @ActiveProfiles("disable-components") public class DisableAllPredicatesByProperty { diff --git a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/config/conditional/OnEnabledComponentTests.java b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/config/conditional/OnEnabledComponentTests.java index 0bc62eebc3..b1853ab2a2 100644 --- a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/config/conditional/OnEnabledComponentTests.java +++ b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/config/conditional/OnEnabledComponentTests.java @@ -61,7 +61,7 @@ public void shouldNotMatchDisabledComponent() { String componentName = "disabled-component"; this.onEnabledComponent = createOnEnabledComponent(componentName); when(conditionContext.getEnvironment()).thenReturn(environment); - environment.setProperty("spring.cloud.gateway." + componentName + ".enabled", "false"); + environment.setProperty("spring.cloud.gateway.server.webflux." + componentName + ".enabled", "false"); ConditionOutcome outcome = onEnabledComponent.getMatchOutcome(conditionContext, mockMetaData(DisabledComponent.class)); diff --git a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/cors/CorsGlobalTests.java b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/cors/CorsGlobalTests.java index f4e2f79192..4ce14ce07a 100644 --- a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/cors/CorsGlobalTests.java +++ b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/cors/CorsGlobalTests.java @@ -89,7 +89,8 @@ public static class TestConfig { } - @SpringBootTest(classes = TestConfig.class, properties = "spring.cloud.gateway.globalcors.enabled=false") + @SpringBootTest(classes = TestConfig.class, + properties = "spring.cloud.gateway.server.webflux.globalcors.enabled=false") public static class DisabledByProperty { @Autowired(required = false) diff --git a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/cors/SimpleUrlHandlerCorsTests.java b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/cors/SimpleUrlHandlerCorsTests.java index 4784fd3f09..1ed009f963 100644 --- a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/cors/SimpleUrlHandlerCorsTests.java +++ b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/cors/SimpleUrlHandlerCorsTests.java @@ -40,7 +40,7 @@ import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT; @SpringBootTest(webEnvironment = RANDOM_PORT, - properties = "spring.cloud.gateway.globalcors.add-to-simple-url-handler-mapping=true") + properties = "spring.cloud.gateway.server.webflux.globalcors.add-to-simple-url-handler-mapping=true") @DirtiesContext @ActiveProfiles("request-header-web-filter") public class SimpleUrlHandlerCorsTests extends BaseWebClientTests { diff --git a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/discovery/DiscoveryClientRouteDefinitionLocatorIntegrationTests.java b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/discovery/DiscoveryClientRouteDefinitionLocatorIntegrationTests.java index 1178515c9f..16b4fd2af7 100644 --- a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/discovery/DiscoveryClientRouteDefinitionLocatorIntegrationTests.java +++ b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/discovery/DiscoveryClientRouteDefinitionLocatorIntegrationTests.java @@ -38,8 +38,8 @@ import static org.assertj.core.api.Assertions.assertThat; @SpringBootTest(classes = DiscoveryClientRouteDefinitionLocatorIntegrationTests.Config.class, - properties = { "spring.cloud.gateway.discovery.locator.enabled=true", - "spring.cloud.gateway.discovery.locator.route-id-prefix=test__" }) + properties = { "spring.cloud.gateway.server.webflux.discovery.locator.enabled=true", + "spring.cloud.gateway.server.webflux.discovery.locator.route-id-prefix=test__" }) public class DiscoveryClientRouteDefinitionLocatorIntegrationTests { @Autowired diff --git a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/discovery/DiscoveryClientRouteDefinitionLocatorTests.java b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/discovery/DiscoveryClientRouteDefinitionLocatorTests.java index fc26a82241..6e2f6d6012 100644 --- a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/discovery/DiscoveryClientRouteDefinitionLocatorTests.java +++ b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/discovery/DiscoveryClientRouteDefinitionLocatorTests.java @@ -42,17 +42,17 @@ import static org.springframework.cloud.gateway.handler.predicate.RoutePredicateFactory.PATTERN_KEY; @SpringBootTest(classes = DiscoveryClientRouteDefinitionLocatorTests.Config.class, - properties = { "spring.cloud.gateway.discovery.locator.enabled=true", - "spring.cloud.gateway.discovery.locator.route-id-prefix=testedge_", - "spring.cloud.gateway.discovery.locator.include-expression=metadata['edge'] == 'true'", - "spring.cloud.gateway.discovery.locator.lower-case-service-id=true" + properties = { "spring.cloud.gateway.server.webflux.discovery.locator.enabled=true", + "spring.cloud.gateway.server.webflux.discovery.locator.route-id-prefix=testedge_", + "spring.cloud.gateway.server.webflux.discovery.locator.include-expression=metadata['edge'] == 'true'", + "spring.cloud.gateway.server.webflux.discovery.locator.lower-case-service-id=true" /* - * "spring.cloud.gateway.discovery.locator.predicates[0].name=Path", - * "spring.cloud.gateway.discovery.locator.predicates[0].args[pattern]='/'+serviceId.toLowerCase(Locale.ROOT)+'/**'", - * "spring.cloud.gateway.discovery.locator.filters[0].name=RewritePath", - * "spring.cloud.gateway.discovery.locator.filters[0].args[regexp]='/' + serviceId.toLowerCase(Locale.ROOT) + '/(?.*)'" + * "spring.cloud.gateway.server.webflux.discovery.locator.predicates[0].name=Path", + * "spring.cloud.gateway.server.webflux.discovery.locator.predicates[0].args[pattern]='/'+serviceId.toLowerCase(Locale.ROOT)+'/**'", + * "spring.cloud.gateway.server.webflux.discovery.locator.filters[0].name=RewritePath", + * "spring.cloud.gateway.server.webflux.discovery.locator.filters[0].args[regexp]='/' + serviceId.toLowerCase(Locale.ROOT) + '/(?.*)'" * , - * "spring.cloud.gateway.discovery.locator.filters[0].args[replacement]='/$\\\\{remaining}'", + * "spring.cloud.gateway.server.webflux.discovery.locator.filters[0].args[replacement]='/$\\\\{remaining}'", */ }) public class DiscoveryClientRouteDefinitionLocatorTests { diff --git a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/discovery/ReactiveGatewayDiscoveryClientAutoConfigurationTests.java b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/discovery/ReactiveGatewayDiscoveryClientAutoConfigurationTests.java index ef03d72332..22eadc7e1d 100644 --- a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/discovery/ReactiveGatewayDiscoveryClientAutoConfigurationTests.java +++ b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/discovery/ReactiveGatewayDiscoveryClientAutoConfigurationTests.java @@ -35,8 +35,8 @@ public class ReactiveGatewayDiscoveryClientAutoConfigurationTests { @Nested @SpringBootTest(classes = Config.class, - properties = { "spring.cloud.gateway.discovery.locator.enabled=true", - "spring.cloud.gateway.loadbalancer.use404=true", + properties = { "spring.cloud.gateway.server.webflux.discovery.locator.enabled=true", + "spring.cloud.gateway.server.webflux.loadbalancer.use404=true", "spring.cloud.discovery.client.simple.instances.service[0].uri=https://service1:443" }) public class EnabledByProperty { diff --git a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/filter/NettyRoutingFilterTests.java b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/filter/NettyRoutingFilterTests.java index b071212d86..744dbc4e20 100644 --- a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/filter/NettyRoutingFilterTests.java +++ b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/filter/NettyRoutingFilterTests.java @@ -109,9 +109,9 @@ void testConnectTimeoutConfigurationReloadWorks() { ConfigurableEnvironment environment = (ConfigurableEnvironment) this.context.getEnvironment(); HashMap map = new HashMap<>(); environment.getPropertySources().addFirst(new MapPropertySource("mock", map)); - map.put("spring.cloud.gateway.httpclient.connect-timeout", "1000"); + map.put("spring.cloud.gateway.server.webflux.httpclient.connect-timeout", "1000"); this.context.publishEvent(new EnvironmentChangeEvent(this.context, - Collections.singleton("spring.cloud.gateway.httpclient.connect-timeout"))); + Collections.singleton("spring.cloud.gateway.server.webflux.httpclient.connect-timeout"))); Route route = routeLocator.getRoutes() .filter(r -> r.getId().equals("refreshable_configuration_test")) .blockLast(); @@ -120,9 +120,9 @@ void testConnectTimeoutConfigurationReloadWorks() { HttpClientConfig configuration = httpClient.configuration(); assertThat(configuration.options().get(ChannelOption.CONNECT_TIMEOUT_MILLIS)).isEqualTo(1000); - map.put("spring.cloud.gateway.httpclient.connect-timeout", "5000"); + map.put("spring.cloud.gateway.server.webflux.httpclient.connect-timeout", "5000"); this.context.publishEvent(new EnvironmentChangeEvent(this.context, - Collections.singleton("spring.cloud.gateway.httpclient.connect-timeout"))); + Collections.singleton("spring.cloud.gateway.server.webflux.httpclient.connect-timeout"))); httpClient = nettyRoutingFilter.getHttpClient(route, null); configuration = httpClient.configuration(); assertThat(configuration.options().get(ChannelOption.CONNECT_TIMEOUT_MILLIS)).isEqualTo(5000); diff --git a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/filter/factory/RetryGatewayFilterFactoryIntegrationTests.java b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/filter/factory/RetryGatewayFilterFactoryIntegrationTests.java index fb1439d143..fdc20f339f 100644 --- a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/filter/factory/RetryGatewayFilterFactoryIntegrationTests.java +++ b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/filter/factory/RetryGatewayFilterFactoryIntegrationTests.java @@ -64,8 +64,8 @@ import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT; @SpringBootTest(webEnvironment = RANDOM_PORT, - properties = { "spring.cloud.gateway.httpclient.connect-timeout=500", - "spring.cloud.gateway.httpclient.response-timeout=2s", + properties = { "spring.cloud.gateway.server.webflux.httpclient.connect-timeout=500", + "spring.cloud.gateway.server.webflux.httpclient.response-timeout=2s", "logging.level.org.springframework.cloud.gateway.filter.factory.RetryGatewayFilterFactory=TRACE" }) @DirtiesContext // default filter AddResponseHeader suppresses bug diff --git a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/filter/factory/cache/LocalResponseCacheGatewayFilterFactoryTests.java b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/filter/factory/cache/LocalResponseCacheGatewayFilterFactoryTests.java index 1325e75ecc..9c2182287f 100644 --- a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/filter/factory/cache/LocalResponseCacheGatewayFilterFactoryTests.java +++ b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/filter/factory/cache/LocalResponseCacheGatewayFilterFactoryTests.java @@ -69,7 +69,7 @@ private static Long parseMaxAge(String cacheControlValue) { } @Nested - @SpringBootTest(properties = { "spring.cloud.gateway.filter.local-response-cache.enabled=true" }, + @SpringBootTest(properties = { "spring.cloud.gateway.server.webflux.filter.local-response-cache.enabled=true" }, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) public class UsingFilterParams extends BaseWebClientTests { @@ -441,8 +441,8 @@ public RouteLocator testRouteLocator(RouteLocatorBuilder builder) { @Nested @SpringBootTest( - properties = { "spring.cloud.gateway.filter.local-response-cache.enabled=true", - "spring.cloud.gateway.filter.local-response-cache.timeToLive=20s" }, + properties = { "spring.cloud.gateway.server.webflux.filter.local-response-cache.enabled=true", + "spring.cloud.gateway.server.webflux.filter.local-response-cache.timeToLive=20s" }, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) public class UsingPropertiesAsDefault extends BaseWebClientTests { @@ -550,9 +550,9 @@ public RouteLocator testRouteLocator(RouteLocatorBuilder builder) { } @Nested - @SpringBootTest(properties = { "spring.cloud.gateway.filter.local-response-cache.enabled=true", - "spring.cloud.gateway.filter.local-response-cache.time-to-live=2m", - "spring.cloud.gateway.filter.local-response-cache.request.no-cache-strategy=skip-update-cache-entry" }, + @SpringBootTest(properties = { "spring.cloud.gateway.server.webflux.filter.local-response-cache.enabled=true", + "spring.cloud.gateway.server.webflux.filter.local-response-cache.time-to-live=2m", + "spring.cloud.gateway.server.webflux.filter.local-response-cache.request.no-cache-strategy=skip-update-cache-entry" }, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) public class DirectiveNoCacheSkippingUpdate extends BaseWebClientTests { @@ -656,10 +656,9 @@ public RouteLocator testRouteLocator(RouteLocatorBuilder builder) { } @Nested - @SpringBootTest( - properties = { "spring.cloud.gateway.filter.local-response-cache.enabled=true", - "spring.cloud.gateway.filter.local-response-cache.time-to-live=2m", - "spring.cloud.gateway.filter.local-response-cache.request.no-cache-strategy=update-cache-entry" }, + @SpringBootTest(properties = { "spring.cloud.gateway.server.webflux.filter.local-response-cache.enabled=true", + "spring.cloud.gateway.server.webflux.filter.local-response-cache.time-to-live=2m", + "spring.cloud.gateway.server.webflux.filter.local-response-cache.request.no-cache-strategy=update-cache-entry" }, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) public class DirectiveNoCacheWithUpdate extends BaseWebClientTests { diff --git a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/filter/factory/cache/LocalResponseCacheGlobalFilterTests.java b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/filter/factory/cache/LocalResponseCacheGlobalFilterTests.java index f5f4c6686f..11b8cef416 100644 --- a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/filter/factory/cache/LocalResponseCacheGlobalFilterTests.java +++ b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/filter/factory/cache/LocalResponseCacheGlobalFilterTests.java @@ -46,8 +46,8 @@ public class LocalResponseCacheGlobalFilterTests { @Nested @SpringBootTest( - properties = { "spring.cloud.gateway.filter.local-response-cache.enabled=true", - "spring.cloud.gateway.global-filter.local-response-cache.enabled=false" }, + properties = { "spring.cloud.gateway.server.webflux.filter.local-response-cache.enabled=true", + "spring.cloud.gateway.server.webflux.global-filter.local-response-cache.enabled=false" }, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) public class GlobalCacheNotEnabled extends BaseWebClientTests { @@ -98,7 +98,7 @@ public RouteLocator testRouteLocator(RouteLocatorBuilder builder) { } @Nested - @SpringBootTest(properties = { "spring.cloud.gateway.filter.local-response-cache.enabled=true" }, + @SpringBootTest(properties = { "spring.cloud.gateway.server.webflux.filter.local-response-cache.enabled=true" }, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) public class GlobalCacheEnabled extends BaseWebClientTests { diff --git a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/filter/factory/rewrite/ModifyRequestBodyGatewayFilterFactorySslTimeoutTests.java b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/filter/factory/rewrite/ModifyRequestBodyGatewayFilterFactorySslTimeoutTests.java index 8ffc979479..0f7113c57b 100644 --- a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/filter/factory/rewrite/ModifyRequestBodyGatewayFilterFactorySslTimeoutTests.java +++ b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/filter/factory/rewrite/ModifyRequestBodyGatewayFilterFactorySslTimeoutTests.java @@ -60,7 +60,7 @@ * @author fangfeikun */ @SpringBootTest(webEnvironment = RANDOM_PORT, - properties = { "spring.cloud.gateway.httpclient.ssl.handshake-timeout=1ms", + properties = { "spring.cloud.gateway.server.webflux.httpclient.ssl.handshake-timeout=1ms", "spring.main.allow-bean-definition-overriding=true" }) @DirtiesContext @ActiveProfiles("single-cert-ssl") diff --git a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/filter/ratelimit/Bucket4jRateLimiterTests.java b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/filter/ratelimit/Bucket4jRateLimiterTests.java index f262300bf9..43831cd845 100644 --- a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/filter/ratelimit/Bucket4jRateLimiterTests.java +++ b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/filter/ratelimit/Bucket4jRateLimiterTests.java @@ -43,7 +43,7 @@ /** * @author Spencer Gibb */ -@SpringBootTest(webEnvironment = RANDOM_PORT, properties = "spring.cloud.gateway.redis.enabled=false") +@SpringBootTest(webEnvironment = RANDOM_PORT, properties = "spring.cloud.gateway.server.webflux.redis.enabled=false") @DirtiesContext public class Bucket4jRateLimiterTests extends BaseWebClientTests { diff --git a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/filter/ratelimit/RedisRateLimiterTests.java b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/filter/ratelimit/RedisRateLimiterTests.java index 2be6617ab0..febb514ca6 100644 --- a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/filter/ratelimit/RedisRateLimiterTests.java +++ b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/filter/ratelimit/RedisRateLimiterTests.java @@ -54,7 +54,8 @@ * @author Denis Cutic * @author Andrey Muchnik */ -@SpringBootTest(webEnvironment = RANDOM_PORT, properties = { "spring.cloud.gateway.function.enabled=false" }) +@SpringBootTest(webEnvironment = RANDOM_PORT, + properties = { "spring.cloud.gateway.server.webflux.function.enabled=false" }) @DirtiesContext @Testcontainers @Tag("DockerRequired") diff --git a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/handler/FilteringWebHandlerCacheEnabledIntegrationTests.java b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/handler/FilteringWebHandlerCacheEnabledIntegrationTests.java index 650a8a0836..8ce2989397 100644 --- a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/handler/FilteringWebHandlerCacheEnabledIntegrationTests.java +++ b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/handler/FilteringWebHandlerCacheEnabledIntegrationTests.java @@ -42,9 +42,9 @@ import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT; @SpringBootTest(webEnvironment = RANDOM_PORT, - properties = { "spring.cloud.gateway.route-filter-cache-enabled=true", + properties = { "spring.cloud.gateway.server.webflux.route-filter-cache-enabled=true", "management.endpoint.gateway.enabled=true", "management.endpoints.web.exposure.include=*", - "spring.cloud.gateway.actuator.verbose.enabled=true" }) + "spring.cloud.gateway.server.webflux.actuator.verbose.enabled=true" }) @DirtiesContext public class FilteringWebHandlerCacheEnabledIntegrationTests extends BaseWebClientTests { diff --git a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/support/ShortcutConfigurableNonRestrictiveTests.java b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/support/ShortcutConfigurableNonRestrictiveTests.java index c4cf3c8028..daf6413a10 100644 --- a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/support/ShortcutConfigurableNonRestrictiveTests.java +++ b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/support/ShortcutConfigurableNonRestrictiveTests.java @@ -34,7 +34,7 @@ import static org.assertj.core.api.Assertions.assertThat; -@SpringBootTest(properties = "spring.cloud.gateway.restrictive-property-accessor.enabled=false") +@SpringBootTest(properties = "spring.cloud.gateway.server.webflux.restrictive-property-accessor.enabled=false") public class ShortcutConfigurableNonRestrictiveTests { @Autowired diff --git a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/support/tagsprovider/PropertiesTagsProviderTests.java b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/support/tagsprovider/PropertiesTagsProviderTests.java index 922b43f4ae..e3745435c2 100644 --- a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/support/tagsprovider/PropertiesTagsProviderTests.java +++ b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/support/tagsprovider/PropertiesTagsProviderTests.java @@ -37,8 +37,8 @@ public class PropertiesTagsProviderTests { @Test public void test() { contextRunner.withConfiguration(AutoConfigurations.of(GatewayMetricsAutoConfiguration.class)) - .withPropertyValues("spring.cloud.gateway.metrics.tags.foo1=bar1", - "spring.cloud.gateway.metrics.tags.foo2=bar2") + .withPropertyValues("spring.cloud.gateway.server.webflux.metrics.tags.foo1=bar1", + "spring.cloud.gateway.server.webflux.metrics.tags.foo2=bar2") .run(context -> { PropertiesTagsProvider provider = context.getBean(PropertiesTagsProvider.class); Tags tags = provider.apply(MockServerWebExchange.from(MockServerHttpRequest.get("").build())); diff --git a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/test/GatewayIntegrationTests.java b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/test/GatewayIntegrationTests.java index 2ca53a27fd..8af9e45661 100644 --- a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/test/GatewayIntegrationTests.java +++ b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/test/GatewayIntegrationTests.java @@ -62,7 +62,8 @@ import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT; import static org.springframework.cloud.gateway.test.TestUtils.getMap; -@SpringBootTest(webEnvironment = RANDOM_PORT, properties = "spring.cloud.gateway.forwarded.by.enabled=true") +@SpringBootTest(webEnvironment = RANDOM_PORT, + properties = "spring.cloud.gateway.server.webflux.forwarded.by.enabled=true") @DirtiesContext @SuppressWarnings("unchecked") @ExtendWith(OutputCaptureExtension.class) diff --git a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/test/ssl/ClientCertAuthSSLTests.java b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/test/ssl/ClientCertAuthSSLTests.java index 39c13f74fd..d9bd3d4a9f 100644 --- a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/test/ssl/ClientCertAuthSSLTests.java +++ b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/test/ssl/ClientCertAuthSSLTests.java @@ -44,13 +44,13 @@ @ActiveProfiles("client-auth-ssl") public class ClientCertAuthSSLTests extends SingleCertSSLTests { - @Value("${spring.cloud.gateway.httpclient.ssl.key-store}") + @Value("${spring.cloud.gateway.server.webflux.httpclient.ssl.key-store}") private String keyStore; - @Value("${spring.cloud.gateway.httpclient.ssl.key-store-password}") + @Value("${spring.cloud.gateway.server.webflux.httpclient.ssl.key-store-password}") private String keyStorePassword; - @Value("${spring.cloud.gateway.httpclient.ssl.key-password}") + @Value("${spring.cloud.gateway.server.webflux.httpclient.ssl.key-password}") private String keyPassword; @BeforeEach diff --git a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/test/ssl/SSLHandshakeTimeoutTests.java b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/test/ssl/SSLHandshakeTimeoutTests.java index a0f5a47976..f7b0c90f03 100644 --- a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/test/ssl/SSLHandshakeTimeoutTests.java +++ b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/test/ssl/SSLHandshakeTimeoutTests.java @@ -29,7 +29,7 @@ // this test works because it assumes TLS hand shake cannot be done in 1ms. It takes // closer to 80ms @SpringBootTest(webEnvironment = RANDOM_PORT, - properties = { "spring.cloud.gateway.httpclient.ssl.handshake-timeout=1ms" }) + properties = { "spring.cloud.gateway.server.webflux.httpclient.ssl.handshake-timeout=1ms" }) @DirtiesContext @ActiveProfiles("ssl") public class SSLHandshakeTimeoutTests extends SingleCertSSLTests { diff --git a/spring-cloud-gateway-server/src/test/resources/application-client-auth-ssl-bundle.yml b/spring-cloud-gateway-server/src/test/resources/application-client-auth-ssl-bundle.yml index 2ca408d58e..07660e909c 100644 --- a/spring-cloud-gateway-server/src/test/resources/application-client-auth-ssl-bundle.yml +++ b/spring-cloud-gateway-server/src/test/resources/application-client-auth-ssl-bundle.yml @@ -15,7 +15,7 @@ server: client-auth: Need spring: cloud: - gateway: + gateway.server.webflux: httpclient: ssl: ssl-bundle: scg-keystore-with-different-key-password diff --git a/spring-cloud-gateway-server/src/test/resources/application-client-auth-ssl.yml b/spring-cloud-gateway-server/src/test/resources/application-client-auth-ssl.yml index 88d1b1389d..cb01f77005 100644 --- a/spring-cloud-gateway-server/src/test/resources/application-client-auth-ssl.yml +++ b/spring-cloud-gateway-server/src/test/resources/application-client-auth-ssl.yml @@ -15,7 +15,7 @@ server: client-auth: Need spring: cloud: - gateway: + gateway.server.webflux: httpclient: ssl: key-store: classpath:scg-keystore-with-different-key-password.jks diff --git a/spring-cloud-gateway-server/src/test/resources/application-cors-global-config.yml b/spring-cloud-gateway-server/src/test/resources/application-cors-global-config.yml index f210add21a..3205c85c2c 100644 --- a/spring-cloud-gateway-server/src/test/resources/application-cors-global-config.yml +++ b/spring-cloud-gateway-server/src/test/resources/application-cors-global-config.yml @@ -1,6 +1,6 @@ spring: cloud: - gateway: + gateway.server.webflux: globalcors: cors-configurations: '[/**]': diff --git a/spring-cloud-gateway-server/src/test/resources/application-cors-per-route-config.yml b/spring-cloud-gateway-server/src/test/resources/application-cors-per-route-config.yml index 0017f4a6eb..b1a875360a 100644 --- a/spring-cloud-gateway-server/src/test/resources/application-cors-per-route-config.yml +++ b/spring-cloud-gateway-server/src/test/resources/application-cors-per-route-config.yml @@ -1,6 +1,6 @@ spring: cloud: - gateway: + gateway.server.webflux: routes: - id: cors_preflight_test uri: ${test.uri} diff --git a/spring-cloud-gateway-server/src/test/resources/application-defaultid.yml b/spring-cloud-gateway-server/src/test/resources/application-defaultid.yml index ecb94e4cb7..2913364624 100644 --- a/spring-cloud-gateway-server/src/test/resources/application-defaultid.yml +++ b/spring-cloud-gateway-server/src/test/resources/application-defaultid.yml @@ -1,6 +1,6 @@ spring: cloud: - gateway: + gateway.server.webflux: default-filters: - PrefixPath=/httpbin routes: diff --git a/spring-cloud-gateway-server/src/test/resources/application-disable-components.yml b/spring-cloud-gateway-server/src/test/resources/application-disable-components.yml index 7ebfe2f545..ade6bdf3fc 100644 --- a/spring-cloud-gateway-server/src/test/resources/application-disable-components.yml +++ b/spring-cloud-gateway-server/src/test/resources/application-disable-components.yml @@ -7,7 +7,7 @@ spring: import: classpath:application-logging.yml cloud: - gateway: + gateway.server.webflux: globalcors: cors-configurations: '[/**]': diff --git a/spring-cloud-gateway-server/src/test/resources/application-forwardstatic.yml b/spring-cloud-gateway-server/src/test/resources/application-forwardstatic.yml index 35b5b4a0eb..8cb53a4ba8 100644 --- a/spring-cloud-gateway-server/src/test/resources/application-forwardstatic.yml +++ b/spring-cloud-gateway-server/src/test/resources/application-forwardstatic.yml @@ -1,6 +1,6 @@ spring: cloud: - gateway: + gateway.server.webflux: routes: - uri: forward:/docs.html id: static_docs_route diff --git a/spring-cloud-gateway-server/src/test/resources/application-multi-cert-ssl.yml b/spring-cloud-gateway-server/src/test/resources/application-multi-cert-ssl.yml index 5ab3bed37e..f58715a882 100644 --- a/spring-cloud-gateway-server/src/test/resources/application-multi-cert-ssl.yml +++ b/spring-cloud-gateway-server/src/test/resources/application-multi-cert-ssl.yml @@ -11,7 +11,7 @@ server: spring: cloud: - gateway: + gateway.server.webflux: httpclient: ssl: trustedX509Certificates: diff --git a/spring-cloud-gateway-server/src/test/resources/application-netty-routing-filter.yml b/spring-cloud-gateway-server/src/test/resources/application-netty-routing-filter.yml index 8f81445fb8..9356078b4d 100644 --- a/spring-cloud-gateway-server/src/test/resources/application-netty-routing-filter.yml +++ b/spring-cloud-gateway-server/src/test/resources/application-netty-routing-filter.yml @@ -14,7 +14,7 @@ spring: - logging cloud: - gateway: + gateway.server.webflux: routes: # ===================================== - id: per_route_connect_timeout diff --git a/spring-cloud-gateway-server/src/test/resources/application-propertiesmigrationtests.yml b/spring-cloud-gateway-server/src/test/resources/application-propertiesmigrationtests.yml new file mode 100644 index 0000000000..2f781c6a1c --- /dev/null +++ b/spring-cloud-gateway-server/src/test/resources/application-propertiesmigrationtests.yml @@ -0,0 +1,32 @@ +spring.cloud.gateway: + route-refresh-listener.enabled: false + forwarded.enabled: false + x-forwarded.enabled: false + predicate.after.enabled: false + filter.add-request-parameter.enabled: false + routes: + - id: listRoute1 + uri: https://examplel1.com + predicates: + - name: Method + args: + methods: GET + - name: Path + args: + pattern: /anything/listRoute1 + filters: + - AddRequestHeader=X-Test,listRoute1 + - id: listRoute2 + uri: https://examplel2.com + predicates: + - name: Method + args: + methods: GET + - name: Path + args: + pattern: /anything/listRoute2 + filters: + - AddRequestHeader=X-Test,listRoute2 +logging: + level: + org.springframework.cloud.gateway: TRACE diff --git a/spring-cloud-gateway-server/src/test/resources/application-redis-rate-limiter-config.yml b/spring-cloud-gateway-server/src/test/resources/application-redis-rate-limiter-config.yml index a6c5726d0d..dd37bd2b60 100644 --- a/spring-cloud-gateway-server/src/test/resources/application-redis-rate-limiter-config.yml +++ b/spring-cloud-gateway-server/src/test/resources/application-redis-rate-limiter-config.yml @@ -1,6 +1,6 @@ spring: cloud: - gateway: + gateway.server.webflux: default-filters: routes: # ===================================== diff --git a/spring-cloud-gateway-server/src/test/resources/application-redis-rate-limiter-default-config.yml b/spring-cloud-gateway-server/src/test/resources/application-redis-rate-limiter-default-config.yml index 94ae146ab3..2cdd500e57 100644 --- a/spring-cloud-gateway-server/src/test/resources/application-redis-rate-limiter-default-config.yml +++ b/spring-cloud-gateway-server/src/test/resources/application-redis-rate-limiter-default-config.yml @@ -1,6 +1,6 @@ spring: cloud: - gateway: + gateway.server.webflux: default-filters: - name: RequestRateLimiter args: diff --git a/spring-cloud-gateway-server/src/test/resources/application-redis-route-repository.yml b/spring-cloud-gateway-server/src/test/resources/application-redis-route-repository.yml index 3baeb6373f..25300f924d 100644 --- a/spring-cloud-gateway-server/src/test/resources/application-redis-route-repository.yml +++ b/spring-cloud-gateway-server/src/test/resources/application-redis-route-repository.yml @@ -1,5 +1,5 @@ spring: cloud: - gateway: + gateway.server.webflux: redis-route-definition-repository: enabled: true diff --git a/spring-cloud-gateway-server/src/test/resources/application-remote-address.yml b/spring-cloud-gateway-server/src/test/resources/application-remote-address.yml index 12795440c6..dbb64c4d99 100644 --- a/spring-cloud-gateway-server/src/test/resources/application-remote-address.yml +++ b/spring-cloud-gateway-server/src/test/resources/application-remote-address.yml @@ -1,6 +1,6 @@ spring: cloud: - gateway: + gateway.server.webflux: default-filters: routes: # ===================================== diff --git a/spring-cloud-gateway-server/src/test/resources/application-removenonproxyheaders.yml b/spring-cloud-gateway-server/src/test/resources/application-removenonproxyheaders.yml index f95895dbbb..aa7903f0d1 100644 --- a/spring-cloud-gateway-server/src/test/resources/application-removenonproxyheaders.yml +++ b/spring-cloud-gateway-server/src/test/resources/application-removenonproxyheaders.yml @@ -1,6 +1,6 @@ spring: cloud: - gateway: + gateway.server.webflux: default-filters: - RemoveNonProxyHeaders - PrefixPath=/httpbin diff --git a/spring-cloud-gateway-server/src/test/resources/application-request-header-web-filter.yml b/spring-cloud-gateway-server/src/test/resources/application-request-header-web-filter.yml index 021ac0aff1..b42959b5ae 100644 --- a/spring-cloud-gateway-server/src/test/resources/application-request-header-web-filter.yml +++ b/spring-cloud-gateway-server/src/test/resources/application-request-header-web-filter.yml @@ -1,6 +1,6 @@ spring: cloud: - gateway: + gateway.server.webflux: routes: - id: add_request_header_test uri: ${test.uri} diff --git a/spring-cloud-gateway-server/src/test/resources/application-request-headers-if-not-present-web-filter.yml b/spring-cloud-gateway-server/src/test/resources/application-request-headers-if-not-present-web-filter.yml index 23a88f2041..e073badabb 100644 --- a/spring-cloud-gateway-server/src/test/resources/application-request-headers-if-not-present-web-filter.yml +++ b/spring-cloud-gateway-server/src/test/resources/application-request-headers-if-not-present-web-filter.yml @@ -1,6 +1,6 @@ spring: cloud: - gateway: + gateway.server.webflux: routes: - id: add_request_headers_if_not_present_test uri: ${test.uri} diff --git a/spring-cloud-gateway-server/src/test/resources/application-request-map-header-web-filter.yml b/spring-cloud-gateway-server/src/test/resources/application-request-map-header-web-filter.yml index fefe27dba1..8f3713e528 100644 --- a/spring-cloud-gateway-server/src/test/resources/application-request-map-header-web-filter.yml +++ b/spring-cloud-gateway-server/src/test/resources/application-request-map-header-web-filter.yml @@ -1,6 +1,6 @@ spring: cloud: - gateway: + gateway.server.webflux: routes: - id: map_request_header_test_singleresponse uri: ${test.uri} diff --git a/spring-cloud-gateway-server/src/test/resources/application-request-parameter-web-filter.yml b/spring-cloud-gateway-server/src/test/resources/application-request-parameter-web-filter.yml index b0190007dc..b80f0fd9b5 100644 --- a/spring-cloud-gateway-server/src/test/resources/application-request-parameter-web-filter.yml +++ b/spring-cloud-gateway-server/src/test/resources/application-request-parameter-web-filter.yml @@ -1,6 +1,6 @@ spring: cloud: - gateway: + gateway.server.webflux: routes: - id: add_request_parameter_test uri: ${test.uri} diff --git a/spring-cloud-gateway-server/src/test/resources/application-retrytests.yml b/spring-cloud-gateway-server/src/test/resources/application-retrytests.yml index ea5e1be8d0..afc8dc7a75 100644 --- a/spring-cloud-gateway-server/src/test/resources/application-retrytests.yml +++ b/spring-cloud-gateway-server/src/test/resources/application-retrytests.yml @@ -1,6 +1,6 @@ spring: cloud: - gateway: + gateway.server.webflux: default-filters: - PrefixPath=/httpbin routes: diff --git a/spring-cloud-gateway-server/src/test/resources/application-save-session-web-filter.yml b/spring-cloud-gateway-server/src/test/resources/application-save-session-web-filter.yml index 110bb930d0..87539c45d9 100644 --- a/spring-cloud-gateway-server/src/test/resources/application-save-session-web-filter.yml +++ b/spring-cloud-gateway-server/src/test/resources/application-save-session-web-filter.yml @@ -1,6 +1,6 @@ spring: cloud: - gateway: + gateway.server.webflux: routes: - id: save_session_test uri: ${test.uri} diff --git a/spring-cloud-gateway-server/src/test/resources/application-single-cert-ssl.yml b/spring-cloud-gateway-server/src/test/resources/application-single-cert-ssl.yml index 61866d25bc..7483e2a7fc 100644 --- a/spring-cloud-gateway-server/src/test/resources/application-single-cert-ssl.yml +++ b/spring-cloud-gateway-server/src/test/resources/application-single-cert-ssl.yml @@ -11,7 +11,7 @@ server: spring: cloud: - gateway: + gateway.server.webflux: httpclient: ssl: trustedX509Certificates: diff --git a/spring-cloud-gateway-server/src/test/resources/application-verification-route.yml b/spring-cloud-gateway-server/src/test/resources/application-verification-route.yml index eb648d3801..75a109e358 100644 --- a/spring-cloud-gateway-server/src/test/resources/application-verification-route.yml +++ b/spring-cloud-gateway-server/src/test/resources/application-verification-route.yml @@ -1,7 +1,7 @@ server.port: 0 spring: cloud: - gateway: + gateway.server.webflux: routes: - uri: https://example.com predicates: diff --git a/spring-cloud-gateway-server/src/test/resources/application-weights-404.yml b/spring-cloud-gateway-server/src/test/resources/application-weights-404.yml index 49ffb6d5bf..776c12f9ba 100644 --- a/spring-cloud-gateway-server/src/test/resources/application-weights-404.yml +++ b/spring-cloud-gateway-server/src/test/resources/application-weights-404.yml @@ -1,6 +1,6 @@ spring: cloud: - gateway: + gateway.server.webflux: default-filters: - PrefixPath=/httpbin routes: diff --git a/spring-cloud-gateway-server/src/test/resources/application.yml b/spring-cloud-gateway-server/src/test/resources/application.yml index ac989a0185..c8b6a23f8c 100644 --- a/spring-cloud-gateway-server/src/test/resources/application.yml +++ b/spring-cloud-gateway-server/src/test/resources/application.yml @@ -14,7 +14,7 @@ spring: - logging cloud: - gateway: + gateway.server.webflux: globalcors: cors-configurations: '[/**]':