Commit Graph

3563 Commits

Author SHA1 Message Date
Andy Wilkinson e92e56dda5 Drop LevelRemappingAppender
Drop LevelRemappingAppender as, following the changes made in e8f8556d
for gh-7657, it was no longer having any effect.

Closes gh-10842
2017-11-12 12:00:59 +00:00
Andy Wilkinson 07462be090 Polish 2017-11-11 16:29:12 +00:00
Johnny Lim bd0dcfb172 Utilize StandardCharsets
Closes gh-10972
2017-11-10 09:49:13 +01:00
Madhura Bhave 8db77a6a61 Properly configure tldSkipPatterns for Tomcat
Fixes gh-10391
2017-11-07 14:54:32 -08:00
Phillip Webb 06b1b453a6 Limit when SystemEnvironment mapping is used
Update `SpringConfigurationPropertySource` so that the
`SystemEnvironmentPropertyMapper` is only used for the "actual" system
environment property source. This allows SystemEnvironmentProperySource
class to be used for other purposes (for example, Spring Cloud uses it
to as an override source providing decryption).

Only property sources named `systemEnvironment` or ending with
`-systemEnvironment` now have the `SystemEnvironmentPropertyMapper`
applied. The `TestPropertyValues` has been retrofitted to name the
source it adds appropriately.

Fixes gh-10840
2017-11-06 13:12:25 -08:00
Phillip Webb e9f31f9c34 Improve configuration properties back-compatibility
Refine `SystemEnvironmentPropertyMapper` to support environment
variables that would have worked in Spring Boot 1.5. Specifically,
camelCase property bindings now support an additional underscore. The
recommended way to map `fooBar` is still `PREFIX_FOOBAR`, however,
`PREFIX_FOO_BAR` will now also work.

Fixes gh-10873
2017-11-06 11:21:16 -08:00
Phillip Webb 1e7d85a632 Polish 2017-11-06 10:11:50 -08:00
Stephane Nicoll dbea25fa8b Polish "Log context path at startup"
Closes gh-10544
2017-11-06 12:49:43 +01:00
tinexw f76479fb99 Log context path at startup
See gh-10544
2017-11-06 12:49:43 +01:00
Andy Wilkinson 60afbdc868 Polish 2017-11-06 11:44:53 +00:00
Phillip Webb 0fbb4989da Allow recursive list binding when iterable source
Further refine recursive binding rules so that Lists are supported when
the underlying source is iterable.

Close gh-10702
2017-11-05 09:39:17 -08:00
Phillip Webb 588dcf76c6 Only allow binder recursion with Maps
Refine the binder recursion rules introduced in commit f337323819 so
they only apply to Maps. Recursive List and Array binding is now no
longer allowed. Prior to this commit, binding a List that contained a
reference to itself would fail with a `StackOverflowException` if the
underlying property source was not iterable.

Fixes gh-10702
2017-11-04 23:14:03 -07:00
Madhura Bhave 99ad79dbe6 Add tests to trigger binder stack overflow error
Update `CollectionBinderTests` with additional tests that cause a
`StackOverflowException` due to recursive list binding.

See gh-10702
2017-11-04 23:06:38 -07:00
Phillip Webb 861469fb72 Remove accidental System.out 2017-11-04 21:57:59 -07:00
Phillip Webb fabf14ff35 Allow ApplicationPid to write to a new file
Update `ApplicationPid` so that "canWrite" is only called for files
that already exist.

See gh-9922
Fixes gh-10784
2017-11-03 23:54:31 -07:00
Phillip Webb fa191d8c73 Align ReactiveWebApplicationContext with framework
Refactor `ReactiveWebApplicationContext` implementations to align closer
with the `WebApplicationContext` implementations defined in
Spring Framework.

The following classes are now provided:

  - `AnnotationConfigReactiveWebApplicationContext` -- A refreshable
    reactive web context with support for `@Configuration` classes.

  - `GenericReactiveWebApplicationContext` -- A non-refreshable reactive
    GenericApplicationContext.

  - `ReactiveWebServerApplicationContext` --  A non-refreshable reactive
    GenericApplicationContext with support for server discovery.

  - `AnnotationConfigReactiveWebServerApplicationContext` -- A
    non-refreshable reactive `GenericApplicationContext` with support
    for `@Configuration` classes and server discovery.

These classes roughly align to the following Servlet equivalents:

  - `AnnotationConfigWebApplicationContext` (Spring Framework)
  - `GenericWebApplicationContext` (Spring Framework)
  - `ServletWebServerApplicationContext` (Spring Boot)
  - `AnnotationConfigServletWebServerApplicationContext` (Spring Boot)

An additional `ConfigurableReactiveWebEnvironment` interface as also
been introduced, primarily for `@ConditionalOnWebApplication` to use.

Fixes gh-10852
2017-11-03 19:07:23 -07:00
Phillip Webb 427d262297 Polish 2017-11-03 19:07:23 -07:00
Andy Wilkinson bfe2f85a4f Merge branch '1.5.x' 2017-11-03 14:46:25 +00:00
Brian Clozel bb9396e3a4 Enable HTTP/2 support for Tomcat and Undertow
This commit enables HTTP/2 support for Tomcat and Undertow, for both
Servlet-based and Reactive applications.

Enabling the `server.http2.enabled` configuration flag is enough with
Undertow.

Tomcat has a few prerequisites:

* Tomcat 8.5 requires JDK8+ and the proper libtcnative version installed
on the host
* Tomcat 9.0.x requires JDK9+

Closes gh-10043
2017-11-03 14:10:40 +01:00
Brian Clozel 58db841c8f Add Http2 configuration properties
This commit adds a new configuration properties class for configuring
HTTP/2 protocol support.
By default, this protocol is disabled as enabling it requires several
manual changes:

* configuring a web server for proper TLS and ALPN support
* configuring a proper SSL certificate

See gh-10043
2017-11-03 13:56:06 +01:00
Brian Clozel 7f58db7d0e Apply TLS configuration to reactive web servers
This commit applies the SSL configuration to the following reactive web
servers: Jetty, Tomcat, Undertow, Reactor Netty.

Closes gh-9431
2017-11-03 13:56:06 +01:00
Brian Clozel 5f57578b71 Enable APR optional support in Tomcat servers
This commits adds the AprLifecycleListener as a default
LifecycleListener in order to detect and use automatically the
tomcatnative library if it is available, for SSL support.

This feature can be useful for both performance reasons or for
supporting ALPN when using JDK8.

See gh-10043
Closes gh-9964
2017-11-03 13:56:06 +01:00
Henrik 7728f8fde6 Introduce configurable logging.pattern.dateformat
Add configurable logger dateformat support for Logback and Log4j2.

Closes gh-8516
2017-11-02 23:22:15 -07:00
Phillip Webb f0327fbd0d Polish SizeAndTimeBasedRollingPolicy changes
Closes gh-6352
2017-11-02 15:21:14 -07:00
Vedran Pavic 991468b0ef Use SizeAndTimeBasedRollingPolicy file appender
Update the logback file appender to use `SizeAndTimeBasedRollingPolicy`
rather than `FixedWindowRollingPolicy`.

Add two new properties to improve log file configuration capabilities:

 - `logging.file.max-history` to limit the number of archive log files
    to keep.
 - `logging.file.max-size` to limit the log file size.

See gh-6352
2017-11-02 15:18:16 -07:00
Andy Wilkinson 8eae372433 Change handling of spring.config.location so it replaces defaults
Previously, spring.config.name was handled in such a way that its
value would replace the defaults. By constrast, spring.config.location
would add to the defaults.

Update the handling of spring.config.location so that it replaces the
defaults. This aligns its behaviour with spring.config.name. To allow
users to add additional locations a new property,
spring.config.additional-location, has been introduced. It behaves as
spring.config.location did prior to this change.

Closes gh-10595
2017-11-02 17:12:22 +00:00
Stephane Nicoll e28b98c59d Remove multi config runApplication extension
Closes gh-10511
2017-11-02 12:04:22 +01:00
Phillip Webb c55b5d7111 Polish 2017-11-01 23:14:52 -07:00
Brian Clozel 6bfbcc291a Add NettyServerCustomizer for Reactor Netty support
This commit adds a new customizer interface, `NettyServerCustomizer` for
customizing Reactor Netty server instances while they're being built.

Closes gh-10418
2017-10-30 17:50:47 +01:00
Andy Wilkinson ec470fbe59 Call Application and CommandLine Runners after ready event
Closes gh-7656
2017-10-30 16:41:18 +00:00
Stephane Nicoll 4dcc354f86 Merge branch '1.5.x' 2017-10-30 16:31:50 +01:00
Andy Wilkinson 88f869bf06 Remove misleading setters from ConfigurationPropertiesBindingPostProcessor
Previously, ConfigurationPropertiesBindingPostProcessor had a number
of setter methods that implied that its configuration was more mutable
than it actually is and would only have an effect when called early
on in the post-processor's lifecycle.

This commit clarifies how the post-processor can be configured by
removing the misleading setters.

Closes gh-10598
2017-10-27 21:44:12 +01:00
Andy Wilkinson 85b1511085 Make configuration properties binding always uses current environment
Previously, configuration properties binding would only see changes to
the environment if there was no PropertySourcesPlaceholderConfigurer
in the context. This happened because
PropertySourcesPlaceholderConfigurer wrapped the Environment in a
PropertySource, effectively hiding it from the change tracking
performed by SpringConfigurationPropertySources.

This commit updates ConfigurationPropertiesBindingPostProcessor so
that it ignores the environment property source contained by
PropertySourcesPlaceholderConfigurer and uses a composite of
the PropertySourcesPlaceholderConfigurer's other property sources and
the Environment's PropertySources instead.
2017-10-27 21:29:09 +01:00
Stephane Nicoll fd07bfd816 Polish "Add runApplication() Kotlin top level function"
Closes gh-10511
2017-10-27 14:22:15 +02:00
Sebastien Deleuze baffecdb14 Add runApplication() Kotlin top level function
Since Kotlin extensions do not apply to static
methods, this commit introduces a runApplication()
Kotlin top level function that acts as a Kotlin
shortcut for SpringApplication.run().

This shortcut avoids to require using non-idiomatic
code like SpringApplication.run(FooApplication::class.java)
and provides a runApplication<FooApplication>() alternative
(as well as an array of KClass based alternative when
multiple classes need to be passed as parameter).

It is possible to customize the application with the
following syntax:

runApplication<FooApplication>() {
    setEnvironment(environment)
}

See gh-10511
2017-10-27 14:18:24 +02:00
Stephane Nicoll b720c2141c Rename DatabaseInitialization to DataSourceInitialization
Closes gh-10779
2017-10-26 16:26:08 +02:00
Stephane Nicoll 3412ee62d5 Make @Validated a hard requirement for JSR-303 validation
Closes gh-8024
2017-10-25 17:43:18 +02:00
Stephane Nicoll b23f68b0d5 Merge branch '1.5.x' 2017-10-25 13:59:54 +02:00
Madhura Bhave 2e3187d1f6 Null values from yaml should be stored as empty string
When building a flattened map, the YamlProcessor from
Spring Framework, converts a null value to an empty string.
We want the null value to also keep track of its origin,
which is why this commit creates an `OriginTrackedValue`
for an empty string if the original value is null.

Fixes gh-10656
2017-10-24 14:57:22 -07:00
Andy Wilkinson 2b426c30a6 Polish “Remove explicit type arguments”
Closes gh-10494
2017-10-24 14:44:26 +01:00
Johnny Lim 6168fae720 Remove explicit type arguments
See gh-10494
2017-10-24 14:44:20 +01:00
Andy Wilkinson a256602c7b Polish 2017-10-24 14:41:03 +01:00
Stephane Nicoll 76c4819053 Remove internal configuration properties validator cleanup
This commit removes the cleanup of the javax.validator.Validator that
can be created to validate @ConfigurationProperties binding as the
memory effect can no longer be reproduced.

Closes gh-10573
2017-10-24 10:05:52 +02:00
Stephane Nicoll c2f649df54 Add support for JPA mapping resources
Closes gh-10684
2017-10-19 17:35:38 +02:00
Andy Wilkinson 77cbab794e Make TomcatEmbeddedWebappClassLoader parallel capable
Closes gh-10477
2017-10-17 16:04:27 +01:00
Andy Wilkinson 688da652ac Polish 2017-10-17 15:41:55 +01:00
Stephane Nicoll 2eba1c5f62 Polish "Use Assert.state() with Supplier where possible"
Closes gh-10658
2017-10-17 15:36:51 +02:00
dreis2211 3b71393e0a Use Assert.state() with Supplier where possible
See gh-10658
2017-10-17 15:35:59 +02:00
Stephane Nicoll 22de4303c5 Polish "When pool autocommit is disabled, inform Hibernate"
Closes gh-9737
2017-10-17 11:39:44 +02:00
Craig Andrews d0e70e90de When pool autocommit is disabled, inform Hibernate
Starting with Hibernate 5.2.10, the JPA property
`hibernate.connection.provider_disables_autocommit` should be set to true
when the datasource has autocommit disabled in order to improve
performance.

See gh-9737
2017-10-17 09:19:47 +02:00
Brian Clozel 81d1b3c6ee Build against Spring Framework 5.0.1.BUILD-SNAPSHOT
See gh-10587
2017-10-12 15:52:11 +02:00
Andy Wilkinson 273defdb1f Merge branch '1.5.x' 2017-10-12 14:40:02 +01:00
Phillip Webb 97afe8e938 Fix package tangle in properties source
Update `SpringConfigurationPropertySource` so that it no longer
references types in `org.springframework.boot.env`.

Closes gh-10592
2017-10-11 11:24:46 -07:00
Phillip Webb f48550aa44 Fix package tangle in binder
Update the `BinderConversionService` so that it no longer references
classes from `org.springframework.boot.context.properties.bind`.

See gh-10592
2017-10-11 11:23:14 -07:00
Andy Wilkinson bcfb1d17b1 Merge branch '1.5.x' 2017-10-11 16:19:25 +01:00
Phillip Webb f337323819 Allow recursive binding in Maps
Update `Binder` so that Maps containing references to themselves may
be bound. The existing stack-overflow protection (required when binding
a bean to a non enumerable source) now only applies to bean properties.

Fixes gh-9801
2017-10-10 21:41:53 -07:00
Madhura Bhave 3ec3b64d45 Guard against binding non-instantiable types
Update `JavaBeanBinder` so that null instances that are non-instantiable
are not bound.

Fixes gh-10131
2017-10-10 17:55:35 -07:00
Madhura Bhave b7c37c2807 Expose webServer from ReactiveWebServerApplicationContext
Closes gh-9746
2017-10-10 14:51:11 -07:00
Phillip Webb b3555fa5c5 Fix checkstyle violation in properties file
See gh-10565
2017-10-10 13:48:33 -07:00
Thiago Hirata 85e71f2373 Update OriginTrackedPropertiesLoader to ISO 8859-1
Align `OriginTrackedPropertiesLoader` with Java default property loading
by using ISO 8859-1 character encoding.

Closes gh-10565
2017-10-10 12:31:43 -07:00
Phillip Webb 748e0779b6 Update copyright year for changed files 2017-10-10 11:56:13 -07:00
Phillip Webb b87f9c11f1 Fix POMs for the updated build/release process
Fix POMs following project relocations and apply CI friendly Maven
conventions.

See gh-9316
2017-10-04 16:34:38 -07:00
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
2017-10-04 16:34:23 -07:00