Create a new `Binder` class specifically designed to bind properties
from one or more `ConfigurationPropertySources` to an object.
The binder provides a replacement for `RelaxedBinder` and attempts to
fix the limitations of the previous solution.
Closes gh-8868
Add a new abstraction that represents a source for configuration
properties. The new source is similar to the `Environment` abstraction
provided by Spring Framework but follows a stricter set of rules.
The `ConfigurationPropertySource` provides a uniform view onto a source
and will help to move responsibility for accessing properties in a
"relaxed" way away from the caller.
The `ConfigurationPropertyName` class enforces strict naming rules
that callers must follow when accessing properties. Configuration
names are lowercase, dot separated and may contain dashes. In
addition "indexed" name elements may be defined by using square
brackets.
Mapping is provided to existing Spring PropertySources implemented with
the relaxed rules that users are used to. For example the configuration
property `server.local-host` can still be written in a property files
as `server.localHost` or in an environment variable as SERVER_LOCALHOST.
Closes gh-4910
Move the `Origin` and related classes from `o.s.boot.env` to
`o.s.boot.orgin` and extend support. The concept of an origin can now
be used outside of just the Spring Environment abstraction.
Closes gh-9001
Deprecate `RelaxedDataBinder`, `RelaxedPropertyResolver` and related
classes in preparation for the updated configuration properties binder
work.
See gh-9000
Update `SpringApplication` so that the `sources` property is
independent to the primary source provided on construction.
Prior to this commit the sources property was a little unusual in that
calling set would add to the existing collection.
Closes gh-8910
`BasicErrorControllerIntegrationTest` is handling the context in each test
and yet it starts a useless test via `@SpringBootTest`. This commit
removes the useless runner and associated annotations.
Now that reactor-netty has a strict set of transitive dependencies, this
commit refactors the managed dependencies to only list the required
ones. `netty-all` is still managed to avoid conflicts when pulled by
other libraries.
Fixes gh-8553
Refine Mustache support to provide a cleaner separation between the
reactive and servlet implementations. The views have now moved to the
`spring-boot` project and the auto-configuration has been split into
two distinct `@Imports` to save needing full package declarations.
See gh-8941
This commit simplifies the Mustache support for Spring MVC and removes
the included (view-based) i18n support in favor of more idiomatic
constructs like Mustache lambdas.
Fixes gh-8941
This commit moves the existing Spring MVC Mustache support to its own
`servlet` package and adds a new one under `reactive` for the WebFlux
web applications.
New `MustacheView` and `MustacheViewResolver` types resolve and render
Mustache views for WebFlux applications.
Since this templating engine is now supported by two flavors of Spring
web apps, the `spring-boot-starter-mustache` does not depend anymore on
the `spring-boot-starter-web` one: it's up to the developer to add the
relevant starter `web` or `webflux` to their application.
Fixes gh-8648