2029 Commits

Author SHA1 Message Date
Andy Wilkinson
c722692a8b Polish "Align MustacheViewResolver with other similar resolvers"
See gh-24011
2020-11-03 14:28:11 +00:00
Dave Syer
22693c17f3 Align MustacheViewResolver with other similar resolvers
The `FreeMarkerViewResolver` (and other template-based resolvers) in
Spring Framework avoid using reflection if they know how to
instantiate the view class. This change aligns with them.

See gh-24011
2020-11-03 14:21:50 +00:00
Andy Wilkinson
699f03d5a6 Merge branch '2.3.x'
Closes gh-24010
2020-11-03 14:04:38 +00:00
Andy Wilkinson
2dce4aa42b Merge branch '2.2.x' into 2.3.x
Closes gh-24009
2020-11-03 14:04:08 +00:00
Andy Wilkinson
30a0ccab02 Remove use of @PostConstruct from main code
When running on Java 11 (where `@PostConstruct` is no longer part of
the JRE) and without a dependency on jakarta-annotation-api,
`@PostContruct` annotions are silently dropped. This leads to obscure and
hard-to-track down changes in the behaviour of our auto-configuration
as the `@PostConstruct`-annotated methods are not invoked.

To allow users to run on Java 11 without having jakarta-annotation-api
on the classpath, this commit removes use of `@PostConstruct` from main
code. A Checkstyle rule has also been added to prevent its usage in
main code from being reintroduced.

Closes gh-23723
2020-11-03 13:59:38 +00:00
Stephane Nicoll
b67d746840 Fix metadata for deprecated logging.file properties
See gh-23609

Closes gh-23995
2020-11-02 18:09:27 +01:00
Phillip Webb
fb59432cf5 Use Graal friendly logging factory implementations
Update `LoggingSystemFactory` class present checks to use a static
final field so that they work better with Graal.

Closes gh-23985
2020-11-01 12:54:43 -08:00
Phillip Webb
298880c260 Polish formatting 2020-11-01 12:50:31 -08:00
izeye
9c35cd41ad Polish
See gh-23986
2020-11-01 17:07:50 +01:00
Phillip Webb
929d8fcd3c Update copyright year of changed files 2020-10-29 09:08:13 -07:00
Phillip Webb
a41ff4dfab Merge branch '2.3.x' 2020-10-29 09:07:57 -07:00
Phillip Webb
b0c2687aa9 Update copyright year of changed files 2020-10-29 09:07:42 -07:00
Phillip Webb
c0a0c4cbac Show the source jar of a ClasspathResource
Update `TextResourceOrigin` so that it shows the source jar file
of a `ClasspathResource`.

Closes gh-23019
2020-10-28 18:25:28 -07:00
Andy Wilkinson
74ec5f65d1 Make isPresent check more Graal-friendly
Closes gh-23925
2020-10-28 10:30:11 +00:00
Andy Wilkinson
12dcf147be Polish
See gh-21454
2020-10-28 07:09:47 +00:00
Phillip Webb
2e2b371679 Add auto-trimming support to configtree sources
Update `ConfigTreePropertySource` with an option to automatically trim
trailing new-line characters.

Closes gh-23826
2020-10-27 22:22:59 -07:00
Phillip Webb
cf673cee55 Use stricter document properties separator logic
Update `OriginTrackedPropertiesLoader` with stricter logic around the
document separator. If the preceding or following lines are comments
then the separator will be ignored.

Closes gh-22963
2020-10-27 21:43:44 -07:00
Phillip Webb
0588e989af Don't adapt RandomPropertySource
Stop adapting `RandomPropertySource` to `ConfigurationPropertySource`
since it's not useful as a binding source.

Closes gh-21659
2020-10-27 20:41:13 -07:00
Andy Wilkinson
f60f3cb38e Exclude property beans from method validation
Exclude `@ConfigurationProperties` beans from method validation so
that `@Validated` can be used on final classes without the method
validation post-processor throwing an exception.

This commit introduces a `FilteredMethodValidationPostProcessor` class
which will use `MethodValidationExcludeFilters` to exclude beans from
method validation processing. Using `@EnableConfigurationProperties`
will automatically register an appropriate filter.

Closes gh-21454
2020-10-27 15:43:00 -07:00
Phillip Webb
a0862f9146 Support wildcard configtree imports
Update `ConfigTreeConfigDataResource` so that a wildcard suffix can
be used to import multiple folders. The pattern logic from
`StandardConfigDataLocationResolver` has been extracted into a new
`LocationResourceLoader` class so that it can be reused.

Closes gh-22958
2020-10-27 14:14:23 -07:00
Andy Wilkinson
fafc0a91e3 Register @WebListeners in a way that allows them to register components
Previously, @WebListeners were discovered via custom component scanning
and then registered programmatically via the ServletContext. The servlet
spec requires any ServletContextListener registered in this manner to be
prohibited from programatically configuring servlets, filters, and
listeners. This left us not strictly complying with the servlet spec
as a ServletContextListener registered via a @WebListener annotation
should be able to programatically configure other components.

This commit updates WebListenerHandler to register each @WebListener
component directly with Jetty, Tomcat, or Undertow rather than via the
ServletContext API. This ensure that any @WebListener-annoated
ServletContextListener registered via servlet component scanning is
able to programatically register servlets, filters, and listeners.

There is a small chance that this will be a breaking change for some
users:

1. The ServletListenerRegistrationBeans that were previously defined
   for each @WebListener will now be
   WebListenerHandler.WebListenerRegistrars
2. Each @WebListener-annotated class will now be instantiated by
   Jetty, Tomcat, or Undertow. Jetty and Tomcat both require the class
   to be public and have a public default constructor. Previously,
   a package-private class or default constructor could be used as the
   instantiation was performed by Spring Framework. Undertow is not
   affected as it can instantiate a package-private type.

Fixes gh-18303
2020-10-26 13:26:52 -07:00
Phillip Webb
5e26954068 Provide default charset properties
Fixed gh-23827
2020-10-26 08:57:06 -07:00
Phillip Webb
771503f30d Attempt to fix flaky logging tests 2020-10-25 09:21:17 -07:00
Phillip Webb
70b7326b73 Refine exception handling in logging listener
Refine the exception handling block to cover initialization exceptions
without a log file.

Closes gh-23802
2020-10-25 09:21:17 -07:00
Stephane Nicoll
cb31d9547c Merge branch '2.3.x' 2020-10-24 07:40:48 +02:00
Stephane Nicoll
d1e503602b Polish 2020-10-24 07:39:50 +02:00
Stephane Nicoll
3adf167b47 Polish 2020-10-24 07:34:33 +02:00
Phillip Webb
062bd90d87 Add properties for logging charsets
Add `logging.charset.console` and `logging.charset.file` properties
that can be used to configure charsets for Logback/Log4J2.

Closes gh-23827
2020-10-23 18:54:24 -07:00
Phillip Webb
1725594a0e Rationalize Logback logging properties
Deprecate and provide alternatives for logging properties that are
specific to Logback.

The following Spring Boot properties have been changed:

  * logging.pattern.rolling-file-name ->
    logging.logback.rollingpolicy.file-name-pattern

  * logging.file.clean-history-on-start ->
    logging.logback.rollingpolicy.clean-history-on-start

  * logging.file.max-size ->
    logging.logback.rollingpolicy.max-file-size

  * logging.file.total-size-cap ->
    logging.logback.rollingpolicy.total-size-cap

  * logging.file.max-history ->
    logging.logback.rollingpolicy.max-history

As have the system environment properties that they map to:

  * ROLLING_FILE_NAME_PATTERN ->
    LOGBACK_ROLLINGPOLICY_FILE_NAME_PATTERN

  * LOG_FILE_CLEAN_HISTORY_ON_START ->
    LOGBACK_ROLLINGPOLICY_CLEAN_HISTORY_ON_START

  * LOG_FILE_MAX_SIZE ->
    LOGBACK_ROLLINGPOLICY_MAX_FILE_SIZE

  * LOG_FILE_TOTAL_SIZE_CAP ->
    LOGBACK_ROLLINGPOLICY_TOTAL_SIZE_CAP

  * LOG_FILE_MAX_HISTORY ->
    LOGBACK_ROLLINGPOLICY_MAX_HISTORY

This commit also cleans up and simplifies `DefaultLogbackConfiguration`.

Closes gh-23609
2020-10-22 12:55:02 -07:00
Scott Frederick
1907f3fe1e Merge branch '2.3.x'
Closes gh-23815
2020-10-22 14:20:35 -05:00
Andy Wilkinson
2d8528d5bd Adapt to deprecation of StringUtils.isEmpty(Object)
See gh-23774
2020-10-22 17:09:33 +01:00
Scott Frederick
43cfebaca0 Ignore properties files in hidden directories
This commit modifies the logic for finding properties files using
wildcard paths to ignore files if any part of the file path contains
a hidden directory. Hidden directories are common when Kubernetes
mounts config maps onto volumes in a pod, which was causing the same
properties files to be loaded multiple times.

Fixes gh-23160
2020-10-21 18:01:44 -05:00
Phillip Webb
fb25104151 Remove unnecessary code
Remove code from `LogbackLoggingSystem.loadDefaults` that sets Logback
context properties from the Spring Environment. The code should not be
required since `LoggingSystemVariables` will have already set system
variables for the logging config to use.

Closes gh-23767
2020-10-20 18:13:23 -07:00
izeye
0e50e87e58 Polish
See gh-23762
2020-10-20 14:28:15 +02:00
Stephane Nicoll
dd74810c80 Revert "Fix detection logic for embedded databases"
This reverts commit c4a5a347028b827ea53975d1ec80f52a14223c5c.

See gh-23721
2020-10-19 12:25:00 +02:00
Andy Wilkinson
01077d8ced Merge branch '2.3.x'
Closes gh-23744
2020-10-19 10:25:50 +01:00
Andy Wilkinson
e8187f9bb0 Merge branch '2.2.x' into 2.3.x
Closes gh-23743
2020-10-19 10:25:24 +01:00
Andy Wilkinson
2a40bd7853 Register shutdown hook so it can tidy up a partial refresh
Previously, the shutdown hook was only registered once refresh has
completed. If the JVM was shut down during refresh (or after refresh
and before the hook was registered) the hook wouldn't run and the
partially refreshed context would not be cleaned up.

This commit moves the registration of the shutdown hook to before
refresh processing begins. This ensures that the hook is available
to clean up the context if the JVM is shutdown while refresh is in
progress.

Fixes gh-23625
2020-10-19 09:16:07 +01:00
Johnny Lim
20f1c0ef0e Polish
See gh-23720
2020-10-17 08:14:32 +02:00
Stephane Nicoll
8d4498ef6c Merge branch '2.3.x' 2020-10-17 08:00:00 +02:00
Asha Somayajula
c4a5a34702 Fix detection logic for embedded databases
Closes gh-23721
2020-10-17 07:51:24 +02:00
Stephane Nicoll
bebdee3709 Polish
See gh-23693
2020-10-17 07:30:12 +02:00
Stephane Nicoll
c0b267feb4 Polish "Fix detection logic for embedded databases"
See gh-23693
2020-10-16 16:32:29 +02:00
Asha Somayajula
ab02084e7b Fix detection logic for embedded databases
See gh-23693
2020-10-16 15:54:54 +02:00
Phillip Webb
bc7b6bdd88 Polish 2020-10-15 15:29:54 -07:00
Phillip Webb
e360e4a75e Polish 'Add a FailureAnalyzer for ConfigDataNotFound'
See gh-23633
2020-10-15 12:11:29 -07:00
Michal Mlak
be7d697121 Add a FailureAnalyzer for ConfigDataNotFound
Add a `FailureAnalyzer` to deal with `ConfigDataNotFoundException`.

See gh-23633
2020-10-15 12:05:21 -07:00
Phillip Webb
1cf9fc107e Improve ConfigData processing code
Refactor `ConfigData` processing code to make it less awkward to
follow.

Prior to this commit the `ConfigDataLocationResolver` would take a
String location and return a `ConfigDataLocation` instance. This was
a little confusing since sometimes we would refer to `location` as the
String value, and sometimes it would be the typed instance. We also
had nowhere sensible to put the `optional:` prefix logic and we needed
to pass a `boolean` parameter to a number of methods. The recently
introduced `Orgin` support also didn't have a good home.

To solve this, `ConfigDataLocation` has been renamed to
`ConfigDataResource`. This frees up `ConfigDataLocation` to be used
as a richer `location` type that holds the String value, the `Orgin`
and provides a home for the `optional:` logic.

This commit also cleans up a few other areas of the code, including
renaming `ResourceConfigData...` to `StandardConfigData...`. It also
introduces a new exception hierarchy for `ConfigDataNotFoundExceptions`.

Closes gh-23711
2020-10-15 11:33:57 -07:00
Phillip Webb
f89b99bdbc Allow FailureAnalizers without ApplicationContext
Update `SpringApplication` so that `FailureAnalyzers` apply even if
the `ApplicationContext` was not created. If no `ApplicationContext`
is available, only `FailureAnalyzer` instances that do not implement
any `Aware` interfaces are considered.

Closes gh-23710
2020-10-15 11:18:26 -07:00
Stephane Nicoll
89b11b0078 Upgrade to Liquibase 3.10.3
This commit upgrades to Liquibase 3.10.3 and adds an explicit exclude
check as this version started to include a "banner.txt" at the root of
the classpath. Given it may override a banner configured by the user it
is ignored so that the default banner is displayed.

Users impacted by this change can rename their banner and configure the
"spring.banner.location" property to point to it.

Closes gh-23658
2020-10-15 10:20:28 +02:00