256 Commits

Author SHA1 Message Date
Stephane Nicoll
7a64b3f761 Restore Cassandra port option
This commit restores the port option that was removed in an earlier
milestone. Contact points that do not define a port already are
automatically transformed to include the one configured, with a default
matching Cassandra's default port.

This makes upgrades easier in the case a cluster uses consistent ports
everywhere.

Closes gh-19672
2020-03-27 12:20:40 +01:00
Stephane Nicoll
443abd414b Merge branch '2.2.x'
Closes gh-20699
2020-03-27 11:01:00 +01:00
Stephane Nicoll
dfa3939f56 Merge branch '2.2.x' 2020-03-26 11:09:15 +01:00
Stephane Nicoll
ff15d136db Merge branch '2.2.x'
Closes gh-20687
2020-03-26 10:42:31 +01:00
Dave Syer
5022ec500a Extra detail for Kubernetes probes
Provides a few more concrete details about how probes and Kubernetes
behave, so users can make more informed decisions.

See gh-19593
Closes gh-20660
2020-03-24 13:02:54 +01:00
dreis2211
f95e9543dc Fix typos in packaging docs
See gh-20630
2020-03-24 07:44:26 +01:00
Phillip Webb
0717de723f Polish 2020-03-23 20:03:44 -07:00
Brian Clozel
4be64e8f9c Add "management.health.probes.enabled" config property
Prior to this commit, we were relying on the
`"spring.main.cloud-platform"` property for overriding cloud platform
detection and enabling liveness and readiness probes. Changes made in
gh-20553 have now been reverted.

This commit adds the `"management.health.probes.enabled"` configuration
property. The auto-configuration now enables the HTTP Probes and
`HealthIndicator` if this property is enabled, or if the Kubernetes
cloud platform is detected.

This property is `false` by default for now, since enabling this for all
Spring Boot applications would be a breaking change. In this case, the
global `"/actuator/health"` endpoint could report `OUT_OF_SERVICE`
during startup time because the application now reports the readiness as
well.

See gh-19593
2020-03-23 22:04:30 +01:00
Brian Clozel
3cc0ab1583 Polish reference docs on Kubernetes Probes
See gh-19593
2020-03-23 21:23:51 +01:00
Stephane Nicoll
8c9711ab9a Merge branch '2.2.x'
Closes gh-20622
2020-03-23 15:28:41 +01:00
Stephane Nicoll
34b71561d3 Merge branch '2.2.x'
Closes gh-20619
2020-03-23 14:22:56 +01:00
Johnny Lim
cc18b91723 Fix "Building Docker Images" section level
See gh-20608
2020-03-23 08:19:49 +00:00
Brian Clozel
6b9f2cac17 Fix section title levels in reference docs 2020-03-21 11:33:42 +01:00
Brian Clozel
ffdf9a422f Polish Liveness and Readiness support
This commit moves the core Liveness and Readiness support to its own
`availability` package. We've made this a core concept independent of
Kubernetes.

Spring Boot now produces `LivenessStateChanged` and
`ReadinessStateChanged` events as part of the typical application
lifecycle.

Liveness and Readiness Probes (`HealthIndicator` components and health
groups) are still configured only when deployed on Kubernetes.

This commit also improves the documentation around Probes best practices
and container lifecycle considerations.

See gh-19593
2020-03-20 23:54:00 +01:00
Brian Clozel
b30e5a60c5 Polish
See gh-19593
2020-03-19 20:07:35 +01:00
Brian Clozel
fd0b2f6695 Add Kubernetes Liveness and Readiness Probes support
Prior to this commit and as of Spring Boot 2.2.0, we would advise
developers to use the Actuator health groups to define custom "liveness"
and "readiness" groups and configure them with subsets of existing
health indicators.

This commit addresses several limitations with that approach.

First, `LivenessState` and `ReadinessState` are promoted to first class
concepts in Spring Boot applications. These states should not only based
on periodic health checks. Applications should be able to track changes
(and adapt their behavior) or update states (when an error happens).

The `ApplicationStateProvider` can be injected and used by applications
components to get the current application state. Components can also
track specific `ApplicationEvent` to be notified of changes, like
`ReadinessStateChangedEvent` and `LivenessStateChangedEvent`.
Components can also publish such events with an
`ApplicationEventPublisher`. Spring Boot will track startup event and
application context state to update the liveness and readiness state of
the application. This infrastructure is available in the
main spring-boot module.

If Spring Boot Actuator is on the classpath, additional
`HealthIndicator` will be contributed to the application:
`"LivenessProveHealthIndicator"` and `"ReadinessProbeHealthIndicator"`.
Also, "liveness" and "readiness" Health groups will be defined if
they're not configured already.

Closes gh-19593
2020-03-19 14:11:00 +01:00
Andy Wilkinson
0a17e2daf3 Merge branch '2.2.x'
Closes gh-20556
2020-03-18 10:57:40 +00:00
Stephane Nicoll
abe43b2e83 Upgrade to Couchbase SDK v3
This commit upgrades to the Couchbase SDK v3 which brings the following
breaking changes:

* Bootstrap hosts have been replaced by a connection string and the
authentication is now mandatory.
* A `Bucket` is no longer auto-configured. The
`spring.couchbase.bucket.*` properties have been removed
* `ClusterInfo` no longer exists and has been replaced by a dedicated
API on `Cluster`.
* `CouchbaseEnvironment` no longer exist in favour of
`ClusterEnvironment`, the customizer has been renamed accordingly.
* The bootstrap-related properties have been removed. Users requiring
custom ports should supply the seed nodes and initialize a Cluster
themselves.
* The endpoints-related configuration has been consolidated in a
single IO configuration.

The Spring Data Couchbase provides an integration with the new SDK. This
leads to the following changes:

* A convenient `CouchbaseClientFactory` is auto-configured.
* Repositories are configured against a bucket and a scope. Those can
be set via configuration in `spring.data.couchbase.*`.
* The default consistency property has been removed in favour of a more
flexible annotation on the repository query methods instead. You can now
specify different query consistency on a per method basis.
* The `CacheManager` implementation is provided, as do other stores for
consistency so a dependency on `couchbase-spring-cache` is no longer
required.

See gh-19893

Co-authored-by: Michael Nitschinger <michael@nitschinger.at>
2020-03-17 17:00:09 +01:00
Stephane Nicoll
e3899df22c Configure Spring Data Couchbase explicitly
This commit configures Spring Data Couchbase explicitly rather than
relying on the abstract configuration class. This has the advantage of
simplifying the auto-configuration and let it us proxy-free
configuration classes.

Spring Boot no longer uses or interacts with CouchbaseConfigurer. Users
relying on that to teach Spring Boot which components to use should
rely on `@Primary` flag instead in case of multiple beans of the same
type.

`CouchbaseConfiguration` is no longer public as extending from it is
no longer necessary. If the `CouchbaseEnvironment` has to be
customized, a `CouchbaseEnvironmentBuilderCustomizer` bean can be
registered to tune the auto-configured environment.

Closes gh-20533
2020-03-17 16:20:21 +01:00
Andy Wilkinson
0315724126 Cache endpoint responses on a per-principal basis
Previously, any HTTP request to an endpoint that included a principal
would bypass the cache. This prevented authenticated requests from
making use of the cache and its configurable time-to-live.

This commit updates the caching operation invoker to include the
principal, if any, in its cache key. As a result, requests that
include a principal will make use of the cache, potentially returning
the result of a previous invocation of the same endpoint by the same
principal.

Closes gh-19538
2020-03-13 15:31:41 +00:00
Andy Wilkinson
ef9960c69f Allow additional tags to be contributed to WebMvc and WebFlux defaults
Closes gh-20175
2020-03-13 09:38:29 +00:00
Johnny Lim
8526e66939 Polish
See gh-20498
2020-03-11 12:17:58 +01:00
Andy Wilkinson
4d371f0d88 Merge branch '2.2.x'
Closes gh-20491
2020-03-10 21:27:41 +00:00
Andy Wilkinson
308e1d3675 Add support for gracefully shutting down the web server
This commit adds support for gracefully shutting down the embedded
web server. When a grace period is configured
(server.shutdown.grace-period), upon shutdown, the web server will no
longer permit new requests and will wait for up to the grace period
for active requests to complete.

Closes gh-4657
2020-03-09 18:12:20 +00:00
Artem Bilan
3967e76b9b Auto-Configure RSocket support for Spring Integration
This commit adds a new auto-configuration for RSocket support in Spring
Integration.

Given an application with `spring-messaging`, `spring-integration-rsocket`
and RSocket dependencies, developers are now able to leverage Spring
Integration features with RSocket.

It is now possible to configure an RSocket server with
`"spring.rsocket.server.*"` properties and let it use
`IntegrationRSocketEndpoint` or `RSocketOutboundGateway` components to
handle incoming RSocket messages. This infrastructure can handle Spring
Integration RSocket channel adapters and `@MessageMapping` handlers
(given `"spring.integration.rsocket.server.message-mapping-enabled"`is
configured.

If the `"spring.integration.rsocket.client.host"` and
`"spring.integration.rsocket.client.port"` (for TCP protocol), or
`"spring.integration.rsocket.client.uri"`  (for WebSocket) is configured
then a `ClientRSocketConnector` will be configured accordingly.

Closes gh-18834

Co-authored-by: Brian Clozel <bclozel@pivotal.io>
2020-03-03 15:15:24 +01:00
Stephane Nicoll
ea66940be1 Document R2DBC support
Closes gh-19988

Co-authored-by: Mark Paluch <mpaluch@pivotal.io>
2020-02-25 09:29:36 -05:00
Stephane Nicoll
4c2ff9c314 Merge branch '2.2.x'
Closes gh-20315
2020-02-25 09:00:30 -05:00
Madhura Bhave
15cd590f7f Allow users to opt out of including the layer tools in a layered jar
For Maven, the layer configuration is now an additional configuration
option instead of a layout type.

Closes gh-19866
2020-02-19 17:28:27 -08:00
Scott Frederick
6017c1ccac Update MongoDB auto-configuration documentation. 2020-02-19 12:39:57 -06:00
Stephane Nicoll
363edfa00c Merge branch '2.2.x'
Closes gh-20221
2020-02-18 17:38:39 +01:00
Stephane Nicoll
ddeac66ca2 Merge branch '2.2.x'
Closes gh-20186
2020-02-14 15:30:26 +01:00
Andy Wilkinson
420af17570 Merge branch '2.2.x'
Closes gh-20148
2020-02-12 18:05:50 +00:00
Stephane Nicoll
b21a41cde1 Merge branch '2.2.x'
Closes gh-20124
2020-02-11 14:27:33 +01:00
Johnny Lim
6818279751 Fix typo
See gh-20049
2020-02-06 16:39:25 +01:00
Madhura Bhave
9382cd4db1 Polish wildcard location documentation 2020-02-04 19:44:56 -08:00
Madhura Bhave
3f9d0058ad Document new Docker-related features
Closes gh-19868
2020-02-04 18:36:39 -08:00
Madhura Bhave
e64a145ef0 Add support for wildcard locations for properties and YAML files
Closes gh-19909
2020-02-03 13:01:01 -08:00
Stephane Nicoll
c4daff7225 Polish "Upgrade to MongoDB Java Driver 4.0 beta1"
See gh-19960
2020-02-03 14:12:46 +01:00
Stephane Nicoll
52659b1df4 Merge branch '2.2.x'
Closes gh-20013
2020-02-03 09:44:40 +01:00
Stephane Nicoll
0516520b7e Polish "Fix scope of CqlSessionBuilder bean"
See gh-19899
2020-01-28 14:12:31 +01:00
Stephane Nicoll
2a01c0262b Merge branch '2.2.x'
Closes gh-19958
2020-01-28 11:13:30 +01:00
Stephane Nicoll
07a1783572 Polish "Introduce appendix section with version properties"
See gh-19898
2020-01-27 14:53:52 +01:00
dreis2211
65394582f6 Introduce appendix section with version properties
With the introduction of Gradle we lost the list of version properties
that were previously in the spring-boot-dependencies POM and were also
linked inside the documentation. This commit introduces an appendix
section in the docs and links the appropriate places to the new section
to restore discoverability.

See gh-19898
2020-01-27 14:53:32 +01:00
dreis2211
b49e01f67a Fix broken documentation links
See gh-19936
2020-01-27 14:14:30 +01:00
Stephane Nicoll
51f6256035 Merge branch '2.2.x' 2020-01-27 14:14:07 +01:00
Stephane Nicoll
eb9b1972cf Adapt Cassandra documentation of v4 driver upgrade
See gh-18621
2020-01-23 18:30:55 +01:00
Stephane Nicoll
2b06a423d0 Merge branch '2.2.x'
Closes gh-19873
2020-01-23 09:54:09 +01:00
dreis2211
991bcf5ce4 Revisit documentation that mentions Gradle "compile" configuration
See gh-19797
2020-01-21 11:09:41 +01:00
Stephane Nicoll
67bba7c64a Merge branch '2.2.x'
Closes gh-19820
2020-01-20 16:13:03 +01:00
Brian Clozel
711391cf2f Move spring.http.* config properties namespace
Closes gh-18827
2020-01-14 10:45:31 +01:00