This commit merges the features of @ConditionalOnPropertyValue
to the existing @ConditionalOnProperty.
The "match" attribute provides the value to match against. By default,
the value should not be equal to "false" which is the existing default
of @ConditionalOnProperty. "defaultMatch" specifies if the value
should be present. The default matches also the existing behavior of
@ConditionalOnProperty.
Fixes gh-1000
Before this change a property whose key was in a non-enumerable property source would
not resolve placeholders, leading to ${style} values in @ConfigurationProperties beans
even if the placeholders ere resolvable.
This commit adds a new conditional annotation that checks if a
property has a given value. This allows to replace constructs
such as
@ConditionalOnExpression("'${app.myProperty:foo}' == 'foo'")
to
@ConditionalOnPropertyValue(property="app.myProperty",
value="foo", defaultMatch=true)
Which is definitely more verbose but has the following advantages:
1. Works by default if the actual property in the environment is
a bit different (i.e. my-property)
2. Works if the value of the property has a diferent case (FoO or
FOO would match)
3. Gives a precise reporting in the auto configuration report
The defaultMatch flag is meant to mention that the condition should
also match if the value is not set; the auto-config report would
also have an explicit report about it.
Fixes gh-1000
This commit uses dedicated Properties classes instead of accessing
the raw environment for Spring Social and Spring Mobile. This
improves the readability and the discovery of such properties.
Fixes gh-1238
Both embedded containers need to be checked after starting to ensure that they
are actually running. With Jetty it's just a question of catching an exception
but with Tomcat it's harder (the current solution involves duplicating some
code from initialize() into start() essentially checking the lifecycle state).
Also adjusted the log levels to prevent noise at WARN level by default when
this happens (since the exception is logged and rethrown anyway).
There is still the issue of whether to fail the build in Maven or Gradle
(separate issue really).
Fixes gh-1232
The problem with the old code is that it worces a ResourceBundle to
initialize with the default encoding (and that is then cached in the
JDK) during @Condition evaluation (so before the encoding is known).
Includes test for swedish messages
Fixes gh-1228
Due to a mistake in Spring Batch 3.0.0 it has been necessary to
introduce a breaking API change (the addition of
BatchConfigurer.getJobExplorer()) in the 3.0.1 release. This commit
updates Boot to use 3.0.1 and modifies the Batch auto-configuration
and associated tests to implement the new method.
Update TomcatEmbeddedServletContainer so that Connectors are removed
during initialization and re-added when the start() method is called.
This prevent protocol handlers from being bound then immediately
unbound. It also ensure that any additional connectors that may have
been added don't accidentally start to accept traffic (which could cause
potential deadlock issues).
Fixes gh-1212
User can now add credentials, vhost and protocol prefix (amqp://)
to any or all of the addresses, extending the format beyond that accepted
bu the rabbitmq client, but making it cloud friendly. Only one of
the addresses needs those properties and all are optional. Port
also defaults to 5672 in an address.
This commit refines the changes made under 4be688aa. 4be688aa made the
default jar task a special case which broke repackaging of the archive
produced by the default war task.
This commit refines RepackageTask’s logic so that, when it’s enabled,
it will repackage a jar task’s archive if:
- The jar task is equal to RepackageTask.withJarTask
- The name of the jar task is equal to RepackageTask.withJarTask
- RepackageTask.withJarTask is null, the jar task is not referenced
by another RepackageTask’s withJarTask, and the jar task has an
empty classifier
The last of these three is the default case and ensures the, when the
Spring Boot plugin is applied, default jar and war artifacts are
repackaged. The classifier check is required to prevent default source
and javadoc artifacts from being repackaged.
Fixes#1204
Prior to this commit, when used with Gradle, spring-boot-starter-ws was
pulling in the versions of spring-jms, spring-oxm, and spring-tx that
Spring WS depends upon, rather than using the Boot’s Spring version.
It’s ok at the moment as both Boot and Spring WS depend on Spring 4.0.5
but will cause problems if we upgrade to 4.0.6 before Spring WS does.
This commit adds explicit dependencies on spring-jms and spring-oxm so
that Gradle pulls in the correct version (as long as a transitive
dependency doesn’t pull in a version that’s greater than the version
Boot’s using).
The logic that determined whether or not the repackaging action should
be applied to a particular jar task was broken and caused problems
when a custom RepackageTask was used in a project's build.
This commit updates the logic so that repackaging will be applied:
- To the default jar task if RepackageTask.withJarTask is null
- To a jar task if it is equal to RepackageTask.withJarTask
- To a jar task if its name is equal to RepackageTask.withJarTask
Repackaging is not applied if:
- RepackageTask.enabled is false
Numerous integration tests have been added to verify the repackaging
behaviour.
Fixes#1204