Commit Graph

50 Commits (a46572a884754333b75bdbfb8fce7ae7d914497a)

Author SHA1 Message Date
Scott Frederick 1e2176b6c9 Improve Redis URL validation
This commit improves the validation of URLs provided in the property
'spring.redis.url' used to auto-configure a Spring Data Redis
connection. In particular, only the URL schemes 'redis://' and
'rediss://' are allowed, and any other scheme will result in a
configuration error. A failure analyzer is also provided to improve
diagnostics for common mis-configurations detected by this validation.

Fixes gh-21999
4 years ago
Andy Wilkinson 0bb687717c Auto-configure a lifecycle processor with configurable timeout
Closes gh-21347
5 years ago
Vedran Pavic fec386b574 Harmonize naming of Elasticsearch auto-configuration classes 5 years ago
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
5 years ago
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
5 years ago
Stephane Nicoll 19fbac7d59 Add auto-configuration for Spring Data R2DBC
This commit adds auto-configuration support for Spring Data R2DBC. If a
`ConnectionFactory` and Spring Data are available, scanning of reactive
repositories is enabled.

This commit also adds a starter to bring R2DBC and the necessary Spring
Data libraries.

See gh-19988

Co-authored-by: Mark Paluch <mpaluch@pivotal.io>
Co-authored-by: Oliver Drotbohm <odrotbohm@pivotal.io>
5 years ago
Stephane Nicoll 5c174feb65 Add auto-configuration for R2DBC's ConnectionFactory
This commit adds auto-configuration for R2DBC. If R2DBC is on the
classpath, a `ConnectionFactory` is created similarly to the algorithm
used to create a `DataSource`.

If an url is specified, it is used to determine the R2DBC driver and
database location. If not, an embedded database is started (with only
support of H2 via r2dbc-h2). If none of those succeed, an exception is
thrown that is handled by a dedicated FailureAnalyzer.

To clearly separate reactive from imperative access, a `DataSource` is
not auto-configured if a `ConnectionFactory` is present. This makes sure
that any auto-configuration that relies on the presence of a
`DataSource` backs off.

There is no dedicated database initialization at the moment but it is
possible to configure flyway or liquibase to create a local `DataSource`
for the duration of the migration. Alternatively, if Spring Data R2DBC
is on the classpath, a `ResourceDatabasePopulator` bean can be defined
with the scripts to execute on startup.

See gh-19988

Co-authored-by: Mark Paluch <mpaluch@pivotal.io>
5 years ago
Scott Frederick ed6fbc6bec Remove Spring Cloud Connectors auto-config/starter
The Spring Cloud Connectors project has been deprecated in favor of the
Java CFEnv project. The Boot auto-configuration and starter that support
Connectors were deprecated in Boot 2.2.

This commit removes the Connectors auto-configuration, starter,
and dependency management.

Closes gh-19798
5 years ago
Scott Frederick c789592e26 Remove support for deprecated Elasticsearch Jest client
Closes #19676
5 years ago
Brian Clozel b780e5247c Remove support for Elasticsearch transport client
The Elasticsearch transport client has been deprecated since Spring Boot
2.2.0 and is about to be removed from Spring Data Elasticsearch and
Elasticsearch itself in their next major releases.

The available REST client support variants are now the preferred way of
using Elasticsearch features.

Closes gh-19668
5 years ago
Madhura Bhave 40ac5b4ae2 Autoconfigure RSocket Security
Closes gh-18356
5 years ago
Madhura Bhave 22ed56ac52 Add auto-config for Spring Security's SAML support
Closes gh-18260

Co-authored-by: Phillip Webb <pwebb@pivotal.io>
5 years ago
Madhura Bhave 2726540e76 Merge branch '2.1.x'
Closes gh-17980
5 years ago
Madhura Bhave 674f2f5a6c EndpointRequest should match @ServletEndpoint
This commit also changes the request matcher for MVC
endpoints to use an AntPathRequestMatcher instead of an
MvcRequestMatcher. The endpoint is always available
under the mapped endpoint path and this way the same matcher
can be used for both MVC and Jersey.

Fixes gh-17912

Co-authored-by: Phillip Webb <pwebb@pivotal.io>
5 years ago
Brian Clozel 3c28622ebc Add support for reactor-tools debug agent
The `reactor-tools` dependency now brings a new Reactor Debug Agent
which instruments loaded classes for better Reactor stacktraces.
This commit removes the `spring.reactor.stacktrace-mode.enabled`
configuration property since the related Reactor Hook is about to be
removed.
As a replacement, we're introducing `spring.reactor.debug-agent.enabled`
which tells whether the Reactor Debug Agent should be loaded, given that
the `reactor-tools` dependency is available. This option is enabled by
default, since adding the dependency on classpath is a strong signal
already.

Fixes gh-17128
5 years ago
Brian Clozel 16c521a9e6 Auto-configure reactive Elasticsearch components
As of Spring Data Moore, a new reactive template and the
corresponding repositories support have been added.

This commit auto-configures a `ReactiveElasticsearchTemplate`
with the configuration properties under the
`spring.data.elasticsearch.client.reactive` namespace.
To enable this feature, applications require both Spring Data
Elasticsearch dependencies (typically
`spring-boot-starter-data-elasticsearch`) and dependencies
for a `WebClient` (often `spring-boot-starter-webflux`).

The support for the reactive Elasticsearch repositories is
also provided.

Closes gh-16214
6 years ago
Brian Clozel 20dfeddbb3 Auto-configure RSocketRequester.Builder
This commit auto-configures a prototype `RSocketRequester.Builder` bean
for building requester instances. This builder is pre-configured with
auto-detected `RSocketStrategies` (same as the server side).

Closes gh-16280
6 years ago
Brian Clozel b33944b53f Add RSocket server support with Spring Messaging
This commit adds support for RSocket server applications.
The auto-configuration will either add RSocket support to an existing
Reactor Netty server in a WebFlux application (as a WebSocket endpoint),
or bootstrap a brand new RSocket server instance.

Spring Boot will also auto-configure the Spring Messaging infrastructure
that supports Controller beans with `@MessageMapping` annotated methods.

Fixes gh-16021
6 years ago
Stephane Nicoll d5448eb124 Polish "Add failure analyzer for Flyway's bootstrap failure"
Closes gh-16015
6 years ago
Stephane Nicoll 474da80b4d Revert "Restructure of security packages"
See gh-14412
6 years ago
Phillip Webb 29707bf75a Complete restructure of security packages
Complete the restructuring of the security auto-configuration
packages by removing the direct import of web configuration from
the main security auto-configuration.

Closes gh-14412
6 years ago
Madhura Bhave f835f82582 Preliminary restructure of security packages
Restructure the security auto-configuration packages to better reflect
the part of the system that the configuration applies to.

See gh-14412
6 years ago
Madhura Bhave daa3d457b7 Revert OAuth2 Client Registration Grant Type Hierarchy
Closes gh-14554
6 years ago
Phillip Webb ff98ba0fa5 Allow early OnWebApplication filtering
Update `OnWebApplicationCondition` to be an
`AutoConfigurationImportFilter` and filter out classes early.

Closes gh-13328
6 years ago
Phillip Webb c2f8398c06 Allow early OnBeanCondition filtering
Update `OnBeanCondition` to be an `AutoConfigurationImportFilter` and
filter out classes early.

See gh-13328
6 years ago
Andy Wilkinson 4b00dc8a5c Add support for Spring Data JDBC (auto-config, starter, and test slice)
Closes gh-14489
6 years ago
Stephane Nicoll cfd0ab7646 Remove `spring.cloud.enabled` property
This commit removes an undocumented property and rename the Spring
Cloud Service Connectors auto-configuration.

Closes gh-14219
6 years ago
Madhura Bhave f5deebf0cb Support authorization_code grant for OAuth2 client
This commit also refactors OAuth2 client properties. With
the added support for authorization_code clients, client
registrations are now divided into `login` and `authorization_code`.
An environment post processor is used for backward compatibility with
old Open ID Connect login clients.

Closes gh-13812
6 years ago
Johnny Lim cf17106d8d Polish
Closes gh-14212
6 years ago
Brian Clozel e2a7594246 Configure Reactor HTTP client resources
This commit adds support for the new `ReactorResourceFactory` and
ensures that such a bean is created and destroyed with the application
context. This will create a `ClientHttpConnector` bean, to be configured
on the `WebClient.Builder` instance - or let developers create their own
`ClientHttpConnector` bean to override that opinion.

By default, the `ReactorResourceFactory` is configured to participate
with the global resources, for better efficiency.

Closes gh-14058
6 years ago
Madhura Bhave d724f154f4 Merge branch '2.0.x' 6 years ago
Madhura Bhave b93c2b9a9f Allow actuator endpoints to be used with mvcMatchers
This commit changes AbstractWebMvcEndpointHandlerMapping to
be a MatchableHandlerMapping. Additionally, EndpointRequest,
now delegates to MvcRequestMatcher for Spring MVC applications.

For all other applications, AntPathRequestMatcher is used as
a delegate.

Closes gh-13962
6 years ago
Stephane Nicoll de470540ea Add auto-configuration support for TaskScheduler
This commit adds support for providing a default ThreadPoolTaskScheduler
with sensible defaults. A new TaskSchedulerBuilder is provided with
defaults from the `spring.task.scheduler.*` namespace and can be used
to create custom instances.

If no custom `TaskScheduler` bean is present, `@EnableScheduling` now
uses the auto-configured task scheduler.

Closes gh-1397
6 years ago
Madhura Bhave bc6e4e6e55 Add auto-config for reactive OAuth2 Resource Server
Closes gh-13948
6 years ago
Madhura Bhave d6b6a5f81f Add auto-config for spring-security-oauth2-resource-server
Closes gh-13787
6 years ago
Stephane Nicoll c071f34a4a Add auto-configuration support for TaskExecutor
This commit adds support for providing a default ThreadPoolTaskExecutor
with sensible defaults. A new TaskExecutorBuilder is provided with
defaults from the `spring.task.*` namespace and can be used to create
custom instances.

If no custom `Executor` bean is present, `@EnableAsync` now uses the
auto-configure application task executor. Same goes for the async support
in Spring MVC.

Closes gh-1563
6 years ago
dnosan c9df1c551a Add auto-configuration for WebServiceTemplate
See gh-12707
7 years ago
Madhura Bhave 9f4a5c13a5 Add auto-config for WebFlux OAuth2 Login
Closes gh-13142
7 years ago
Vedran Pavic f81f50c119 Improve LDAP auto-configuration
Auto-configuration of LDAP's `LdapTemplate` is currently a part of
`LdapDataAutoConfiguration` which is conditional of presence of
`LdapRepository` (i.e. Spring Data LDAP). This arrangement isn't ideal
since the `LdapTemplate` is a part of Spring LDAP project, and therefore
should not be tied to Spring Data LDAP.

This commit improves and simplifies LDAP auto-configuration by moving
`LdapTemplate` configuration to `LdapAutoConfiguration`. Consequently,
`LdapDataAutoConfiguration` is not needed anymore and is removed.

See gh-13136
7 years ago
Brian Clozel 84c9a65e9d Auto-configure Elasticsearch REST clients
This commit adds auto-configuration support for both `RestClient` and
`RestHighLevelClient` which are provided by `elasticsearch-rest-client`
and `elasticsearch-rest-high-level-client` dependencies respectively.

`RestClient` is associated with configuration properties in the
`spring.elasticsearch.rest.*` namespace, since this is the component
taking care of HTTP communication with the actual Elasticsearch node.

`RestHighLevelClient` wraps the first one and naturally inherits that
configuration.

Closes gh-12600
7 years ago
Phillip Webb 46021928ba Rework common server customization
Update the configurable embedded web server factory interfaces to
extend `ConfigurableWebServerFactory` so that the can be used in a
`WebServerFactoryCustomizer`.

Extract server specific customization to their own auto-configuration
and align reactive/servlet server auto-configuration.

Closes gh-8573
7 years ago
Andy Wilkinson fe4c8f95ed Rename ReactiveWebServerAutoConfiguration
Closes gh-12086
7 years ago
Madhura Bhave 0a446cb962 Refactor Spring Security auto-configuration classes
The auto-configuration for a `UserDetailsService` and the web bits
has been split into two.

Closes gh-11915
Fixes gh-11891
7 years ago
Madhura Bhave 5e2cc02499 Move servlet specific security auto-config 7 years ago
Craig Walls 64d02f8bb5 Remove Spring Social starters and auto-configuration
See gh-11117
7 years ago
Alex Derkach 568cd6472b Add support for reactive Spring Data Couchbase
See gh-10812
7 years ago
Stephane Nicoll dac7d9c174 Rename AutoConfigurationReportLoggingInitializer to ConditionEvaluationReportLoggingListener
Closes gh-2945
7 years ago
Andy Wilkinson 2ae4678b1e Drop support for Spring Mobile
Closes gh-10884
7 years ago
Brian Clozel 68db43cf44 Support error conventions in Spring WebFlux
This commit adds support for Spring Boot error conventions with WebFlux.
The Spring MVC support for that is based on an `Controller` that's
mapped on a specific `"/error"` path and configured as an error page in
the Servlet container. With WebFlux, this support leverages a
`WebExceptionHandler`, which catches exceptions flowing through the
reactive pipeline and handles them.

The `DefaultErrorWebExceptionHandler` supports the following:
* return a JSON error response to machine clients
* return error HTML views (templates, static or default HTML view)

One can customize the error information by contributing an
`ErrorAttributes` bean to the application context.

Spring Boot provides an `ErrorWebExceptionHandler` marker interface and a
base implementation that provides high level constructs to handle
errors, based on the Spring WebFlux functional flavor.
The error handling logic can be completely changed by providing a custom
`RouterFunction` there.

Fixes gh-8625
7 years ago
Phillip Webb 0ba4830b4f Relocate projects to spring-boot-project
Move projects to better reflect the way that Spring Boot is released.

The following projects are under `spring-boot-project`:

  - `spring-boot`
  - `spring-boot-autoconfigure`
  - `spring-boot-tools`
  - `spring-boot-starters`
  - `spring-boot-actuator`
  - `spring-boot-actuator-autoconfigure`
  - `spring-boot-test`
  - `spring-boot-test-autoconfigure`
  - `spring-boot-devtools`
  - `spring-boot-cli`
  - `spring-boot-docs`

See gh-9316
7 years ago