Commit Graph

2627 Commits (aacdeaea4e8475a0299d177f430233b779ac48dd)

Author SHA1 Message Date
Stephane Nicoll ea18fe58e4 Remove useless checked exception throw clause 8 years ago
Stephane Nicoll ad9d912009 Merge branch '1.5.x' 8 years ago
Stephane Nicoll 0d61f92479 Ignore URI when local.mongo.port is set
This commit makes sure that if `local.mongo.port` is set, a `MongoClient`
on the embedded MongoDB instance is created. When an embedded instance
is detected, only the `host` property is used and the `uri` is ignored if
set.

This makes sure that the auto-configured `MongoClient` automatically
switches to the embedded server, even if a production uri has been
specified.

Closes gh-8219
8 years ago
Phillip Webb 58ac67eb27 Merge branch '1.5.x' 8 years ago
Phillip Webb 3ee7dae09b Merge branch '1.4.x' into 1.5.x 8 years ago
Phillip Webb f1012c104a Polish 8 years ago
Phillip Webb 987b6c956e Polish 8 years ago
Phillip Webb 57111aba22 Get published DataSource from EntityManager
Update DataSourceInitializedPublisher to always attempt to obtain the
published DataSource directly from the EntityManager. In the case where
the EntityManager doesn't provide a DataSource, the previous logic is
used.

Fixes gh-8296
8 years ago
Andy Wilkinson 205faa1950 Merge branch '1.5.x' 8 years ago
Andy Wilkinson 70472b36f1 Merge branch '1.4.x' into 1.5.x 8 years ago
Andy Wilkinson 59d3a79c82 Avoid eager initialization when finding beans by annotation
Closes gh-8269
8 years ago
Andy Wilkinson 373474f8f6 Merge branch '1.5.x' 8 years ago
Andy Wilkinson 4390c81115 Merge branch '1.4.x' into 1.5.x 8 years ago
Andy Wilkinson 8a326a8713 Simplify BeanTypeRegistry by requiring a DefaultListableBeanFactory
Closes gh-8439
8 years ago
Stephane Nicoll cf64d9fd35 Reuse auto-configured `Validator` in WebFlux
This commit makes sure that if a `Validator` is auto-configured, it is
reused as the `webFluxValidator`. This is pretty much the same thing as
what was done recently for Spring MVC.

Since the infrastructure is now shared, the package protected class has
been published in the `.validation` package.

Closes gh-8400
8 years ago
Stephane Nicoll deaa6089b0 Move `HttpHandler` configuration to a dedicated auto-configuration
An `HttpHandler` bean must be provided once the infrastructure triggered
by `@EnableWebFlux` has been processed. Rather than creating a
`HttpHandler` in that auto-configuration, this commit moves it to a
dedicated auto-config, like we do for `DispatcherServlet` for
servlet-based webapps.

As this is the only bean we auto-configure in a functional fashion, the
`WebFluxFunctionalAutoConfiguration` is now merged with this new
auto-configuration, making its purposes clearer.

Cloess gh-8436
8 years ago
Phillip Webb a4bcd20b64 Merge branch '1.5.x' 8 years ago
Phillip Webb ca1540cefe Update header copyright for changed files 8 years ago
Phillip Webb 77f6ed8357 Further rework Spring MVC JSR-303 validation
Rework Spring MVC JSR-303 validation support a little more to move
most of the creation logic to the wrapper class. Also rename
`SpringValidatorAdapterWrapper` -> `WebMvcValidator`.

See gh-8223
8 years ago
Phillip Webb 7ed1a26c2d Fix test failures when running in Eclipse
Update MultipartAutoConfigurationTests to reset the Tomcat URL factory.
8 years ago
Phillip Webb 5867cd6175 Polish 8 years ago
Phillip Webb 47b00c086c Polish 8 years ago
Stephane Nicoll d1d70b0207 Merge branch '1.5.x' 8 years ago
Stephane Nicoll 0435f122d4 Rework JSR-303 validation exposure with Spring MVC
This commit improves the initial solution by actually overriding the
`mvcValidator` `@Bean`. This gives us more control as whether a custom
validator has been specified or not. We now wrap it regardless of it
being custom or provided by auto-configuration.

Closes gh-8223
8 years ago
Stephane Nicoll c333ccfe20 Merge branch '1.5.x' 8 years ago
Stephane Nicoll d8f62c46ad Prevent warning due to BPP dependency
`MethodValidationPostProcessor` requires a `Validator` so we need to flag
it as an infrastructure bean to prevent an additional log that indicates
it won't be post-processed.

We obviously don't want to post-process the `Validator` here so adding the
additional meta-data is a good idea anyway.

Closes gh-8422
8 years ago
Stephane Nicoll c5595f296c Add support for Mock test with WebFlux
This commit add mock support for WebFlux with an infrastructure similar
to what `WebMvcTest` provides. `@WebFluxTest` can be used to test
controllers with a narrowed classpath that is relevant to WebFlux. Also,
`@SpringBootTest` now starts WebFlux in "mock" mode by default and
`@AutoConfigureWebTestClient` can be used to inject a `WebTestClient`
connected to the `ApplicationContext`.

To make that happen, a `ReactiveWebApplicationContext` interface has been
introduced to mirror what `WebApplicationContext` currently does. Things
are still a bit volatile at this point and that infra may move to Spring
Framework at some point.

Closes gh-8401
8 years ago
Brian Clozel 3a8be10be8 Enable Tomcat, Jetty and Undertow reactive auto-conf
Closes gh-8403
8 years ago
Stephane Nicoll f1d4d8434b Hide javax.servlet.SessionTrackingMode
The server's session can now be configured in both a servlet and a
reactive environment. The latter has not requirement on the servlet API
and this commit removes the requirement to the `SessionTrackingMode`
enum.

Closes gh-8402
8 years ago
Brian Clozel 8317977e1b Add WebFlux auto-configuration
This commit creates auto-configuration classes for both the
annotation and functional variants of the WebFlux framework.

They provide the basic support to get started with those, by
creating the required `HttpHandler` using the provided application
context (for annotation) or `RouterFunction`s (for functional).

They do support `WebFilter` registration and a few advanced
features such as resource handling, `messageReaders|Writers`
and `ViewResolver` auto-registration.

Closes gh-8386
8 years ago
Brian Clozel 656b509f03 Add support for reactive web servers auto-configuration
This commit adds the auto-configuration for creating reactive
`EmbeddedWebServer` instances. This adds support for the
following servers: Reactor Netty, Tomcat, Jetty and Undertow.

Fixes gh-8302
Fixes gh-8117
8 years ago
Brian Clozel 0b162e894b Manage EmbeddedWebServer in ReactiveWebApplicationContext
This commit adds an `EmbeddedWebServer` instance to the
`ReactiveWebApplicationContext` and ties it to the application
lifecycle.

To launch a reactive web application, two elements are required
from the context:

* a `ReactiveWebServerFactory` to create a server instance
* a `HttpHandler` instance to handle HTTP requests

Closes gh-8337
8 years ago
Brian Clozel f331ac133f Add reactive web server infrastructure
This commit adds the infrastructure for creating and customizing
reactive embedded web servers. Common configuration has been refactored
into the new `ConfigurableEmbeddedWebServer` interface.

See gh-8302
8 years ago
Stephane Nicoll a38d2456c3 Merge branch '1.5.x' 8 years ago
Stephane Nicoll 4aa99b9531 Avoid exposing several javax.validaton.Validator beans
This commit makes sure that the Spring `Validator` used by the MVC
layer doesn't expose a JSR-303 contract, if any.

The default implementation of the `mvcValidator` is
`LocalValidatorFactoryBean`. While this object is exposed as a Spring
`Validator` only, its runtime capabilities expose that contract as well
as the standard `Validator` and `ValidatorFactory` ones.

Concretely, if an auto-configuration is checking if a
`javax.validation.Validator` bean is missing, the condition will match
since we only know about "advertized types": beans haven't been created
yet so we can't inspect their runtime capabilities. Since the condition
match, we will auto-configure a bean. At runtime though, we're no longer
ale to inject a `javax.validation.Validator` by type since two candidates
are available.

This commit introduces `SpringValidatorAdapterWrapper`, a wrapper class
on any `SpringValidatorAdapter` (`LocalValidatorFactoryBean` being one of
the available implementations) that only exposes the Spring contract.

Also, if a `javax.validation.Validator` bean is available, we will use it
for the MVC layer, rather than creating a new one.

Closes gh-8223
8 years ago
Andy Wilkinson 4ff159adbe Merge branch '1.5.x' 8 years ago
Andy Wilkinson b034a505a5 Polish 0f42c5dd
- Apply standard code formatting
- Add class javadoc to MultipleResourceServerConfigurationTests
- Add missing @Override annotations
- Remove unused ExpectedException field
- Remove use of SpringApplicationBuilder from the tests
- Use @ImportAutoConfiguration to import auto-configuration
- Add assertions to verify that the orders haven't been changed
- Remove unnecessary mocking of EmbeddedServletContainerFactory

See gh-8347
8 years ago
Dave Syer c544aff72f Merge remote-tracking branch 'origin/1.5.x' 8 years ago
Dave Syer 0f42c5dd94 Check there is only one ResourceServerConfiguration before modifying
Fixes gh-8347
8 years ago
Madhura Bhave b8a38d60b7 Merge branch '1.5.x' 8 years ago
Madhura Bhave 67810abd9e Match ResourceServerCondition if JWK config present
Closes gh-8350
8 years ago
Stephane Nicoll 91009cfc01 Merge branch '1.5.x' 8 years ago
Stephane Nicoll 43a534f4ca Polish contribution
Closes gh-8195
8 years ago
Mathieu Ouellet fa8f0a6136 Add schema validation options for embedded LDAP
See gh-8195
8 years ago
Stephane Nicoll 4304cdb91a Merge branch '1.5.x' 8 years ago
Stephane Nicoll f57ddff478 Remove dead code
Closes gh-8305
8 years ago
Madhura Bhave b4134e239e Add autoconfiguration for JWKTokenStore
If `jwk.key-set-uri` is present.

Closes gh-4437
8 years ago
Andy Wilkinson 04a87ee4c1 Merge branch '1.5.x' 8 years ago
Andy Wilkinson 01729cc1d2 Merge branch '1.4.x' into 1.5.x 8 years ago
Andy Wilkinson 9e1238e286 Consider resource loader path when checking Groovy template availability
Closes gh-8304
8 years ago
Andy Wilkinson 57fe8b966e Use Spring Session's defaults for its filter's dispatcher types
Closes gh-8288
8 years ago
Andy Wilkinson fe6320db42 Align Security filter dispatcher types with Spring Security's defaults
Closes gh-8289
8 years ago
Stephane Nicoll ce6372c46f Add support of reactive repositories with `@DataMongoTest`
Closes gh-8280
8 years ago
Stephane Nicoll 50553137d3 Merge branch '1.5.x' 8 years ago
Stephane Nicoll a0ef61a27d Enable proxy target class for `MethodValidationPostProcessor`
Closes gh-8277
8 years ago
Andy Wilkinson f9015be619 Merge branch '1.5.x' 8 years ago
Andy Wilkinson e0b355d313 Avoid ClassNotFoundException caused by areturn verification
The verifier's type checker is required to check that a type returned
from a method (an areturn instruction) is assignable to the method's
declared return type. When the return type is an interface, the JLS
states that it should be treated as java.lang.Object. This means that
no analysis of the type being returned is required and verification
passes. When the return type is a class, the type being returned must
be analyzed to ensure that it is compatible. This analysis causes the
return type to be loaded during verification.

Prior to this commit, BasicBatchConfigurer's
createAppropriateTransactionManager method had a return type of
AbstractPlatformTransactionManager and a branch that could return
a JpaTransactionManager. This caused the verifier to attempt to load
JpaTransactionManager so that it could check that it was assignable
to AbstractPlatformTransactionManager. This would fail when
spring-orm is not on the classpath as JpaTransactionManager could not
be loaded.

This commit updates BasicBatchConfigurer to change the return type
of createAppropriateTransactionManager so that it returns a
PlatformTransactionManager which is an interface. As described above,
this relaxes the verification of any areturn instructions in the
method and, in this particular case stops the verifier from trying to
load JpaTransactionManager.

Closes gh-8181
8 years ago
Stephane Nicoll b30d4303d5 Polish contribution
Closes gh-8230
8 years ago
Mark Paluch 48b0f1577b Provide a starter for reactive Spring Data MongoDB
Add autoconfiguration to bootstrap MongoDB Reactive Streams driver
components, reactive Spring Data MongoDB and reactive repositories. Add
bean dependency processor for flapdoodle so embedded MongoDB instances
are configured before bootstraping the reactive MongoDB client.

Add Spring Data MongoDB Reactive starter with blocking and non-blocking
dependencies. MongoDB requires a separate driver that is used in the
`ReactiveMongoTemplate` while `MappingMongoConverter` (shared amongst
blocking/reactive Template API) requires the blocking driver to resolve
DBRefs.

See gh-8230
8 years ago
Andy Wilkinson 16b7bf7f73 Merge branch '1.5.x' 8 years ago
Andy Wilkinson 601c6aa305 Tidy up code formatting and address some compiler warnings 8 years ago
Andy Wilkinson df08863641 Make ServletRegistrationBean and FilterRegistration bean generic
Closes gh-7666
8 years ago
Stephane Nicoll 064faf9560 Merge branch '1.5.x' 8 years ago
Stephane Nicoll aa49468171 Allow to define a custom MessageRecoverer
This commit improves `SimpleRabbitListenerContainerFactoryConfigurer` to
use a custom `MessageConverter`. If such a bean is present, it is used
for the default factory that is auto-configured.

Closes gh-8194
8 years ago
Stephane Nicoll cea64f6a32 Merge branch '1.5.x' 8 years ago
Stephane Nicoll 8a59e88a9d Fix MongoDB CustomConversions bean name
This commit qualifies the `CustomConversions` bean name that the Mongo
auto-configuration might create. `CustomConversions` is a common pattern
in Spring Data and other stores are using the same name.

See https://jira.spring.io/browse/DATASOLR-362

Closes gh-8225
8 years ago
Brian Clozel aeef41c977 Separate container customization from ServerProperties
This commit creates a separate
`ServerPropertiesServletContainerCustomizer` that holds the servlet
container customization code, separating that concern from the server
configuration keys.

See gh-8066
8 years ago
Stephane Nicoll 8899b93de0 Merge branch '1.5.x' 8 years ago
Stephane Nicoll 45a91fca31 Fix parsing of spring.autoconfigure.exclude property
This commits makes sure that `AutoConfigureImportSelector` properly
parses comma separated lists that contain additional spaces.

Closes gh-8220
8 years ago
Andy Wilkinson e891fe0584 Merge branch '1.4.x' into 1.5.x 8 years ago
Andy Wilkinson 06017f688a Only auto-configure SpringSocialDialect for Thymeleaf 2
Previously, SocialWebAutoConfiguration would create a
SpringSocialDialect bean when SpringTemplateEngine was on the
classpath. This class exists in both Thymeleaf 2 and Thymeleaf 3 but
SpringSocialDialect is only compatible with Thymeleaf 2.

This commit updates the auto-configuration to require
SpringResourceResourceResolver to be on the classpath. This class
exists in Thymeleaf 2 but does not exist in Thymeleaf 3.

Closes gh-4858
8 years ago
Brian Clozel 12d883f6b9 Introduce "server.servlet" configuration prefix
This commit refactors the `ServerProperties` property keys and
introduces a separate "server.servlet" namespace to isolate
servlet-specific properties from the rest.

Closes gh-8066
8 years ago
Stephane Nicoll a31a792192 Merge branch '1.5.x' 8 years ago
Stephane Nicoll 130e0808d0 Merge branch '1.4.x' into 1.5.x 8 years ago
Stephane Nicoll 008aef6142 Document @LiquibaseDataSource feature
Closes gh-8214
8 years ago
Stephane Nicoll f41801ee8c Narrow down ConditionalOnWebApplication
Use the new `type` attribute of `@ConditionalOnWebApplication` for the
configurations that have a hard dependency on the Servlet/MVC API.

See gh-8118
8 years ago
Stephane Nicoll 8e6f1218e1 Detect Reactive web applications
This commit improves `@ConditionalOnWebApplication` to specify the
requested web application type. By default, any web application will
match but it can also match only if a recactive (or servlet) web
application is present.

Closes gh-8118
8 years ago
Stephane Nicoll b2ec03cd4e Restore couchbase support
This commit effectively reverts the changes that were applied to
workaround the breakage in spring-data-couchbase.

Closes gh-8200
8 years ago
Stephane Nicoll 5f2bd1667b Merge branch '1.5.x' 8 years ago
Stephane Nicoll e88bda4682 Avoid extra space if condition is empty
Previously, if a builder was created with an empty condition, an extra
space was added before the message. This commit checks for this
particular case and adds a space only when necessary.

Closes gh-8218
8 years ago
Brian Clozel 8619d6a229 Rename EmbeddedServletContainer -> EmbeddedWebServer
This contract is not specific to servlet containers and should be
reused by all web server implementations (including reactive variants).

Fixes gh-8208
8 years ago
Andy Wilkinson 457d0414ea Make ConditionalOnBean a logical AND rather than an OR
Previously ConditionalOnBean was the inverse of
ConditionalOnMissingBean. This meant that the former was a logical OR
while the latter was a logical AND of the requiremnts declared via the
annotation's attributes.

This commit changes the logic for ConditionalOnBean so that it is now
a logical AND. A side-effect of this change is that more information
about what has and has not matched must be tracked during the
evaluation. This extra information is now used to provide more
informative messages in the condition evaluation report that indicate
exactly why @ConditionalOnBean or @ConditionalOnMissingBean did not
match.

Closes gh-5279
8 years ago
Stephane Nicoll 3c6d630a62 Merge branch '1.5.x' 8 years ago
Stephane Nicoll 519a03ccda Polish 8 years ago
Johnny Lim 09998d1155 Fix ImportAutoConfigurationImportSelectorTests.determineImportsWhenUsingNonMetaWithClassesShouldBeSame()
Closes gh-8204
8 years ago
Stephane Nicoll 6af6e8e31b Remove auto-configuration for ServerProperties
This commit removes `ServerProperties` and `ManagementServerProperties`
auto-configurations. Those properties objects are now created using
`@EnableConfigurationProperties` only.

Closes gh-8108
8 years ago
Stephane Nicoll 98d2ed85e4 Fix broken build
Fix couchbase support until a solution is determined for
https://jira.spring.io/browse/DATACOUCH-279

See gh-8200
8 years ago
Stephane Nicoll cfdc75d384 Merge branch '1.5.x' 8 years ago
Johnny Lim 0adab8a2be Use logical 'and' instead of bitwise 'and'
Closes gh-8198
8 years ago
Tommy Ludwig 653366d664 Remove HikariCP-java6 dependency management
Dependency management for the `HikariCP-java6` dependency is no longer
needed since Java 6 is no longer supported by Spring Boot.

The HikariDriverConfigurationFailureAnalyzer has been updated with the
current message thrown by HikariCP in this failure scenario.

Closes gh-8147
8 years ago
Stephane Nicoll 5c663a9ece Merge branch '1.5.x' 8 years ago
Johnny Lim 846994e498 Polish
Closes gh-8148
8 years ago
Brian Clozel 7f39d5a865 Remove usage of Assert.notNull(Object)
This commit updates the Spring Boot codebase to adapt to the removal of
`Assert.notNull(Object)` in SPR-15196.

See gh-8140
8 years ago
Andy Wilkinson 95f659f4f9 Add new WebApplicationType enum to pave the way for Web Flux support
Closes gh-8077
8 years ago
Spring Buildmaster 5c12500366 Next Development Version 8 years ago
Artem Bilan eccefd1343 Make use of new extensions point in IntegrationComponentScanRegistrar
SI 5 has made IntegrationComponentScanRegistrar more extensible by
offering a method for getting the back packages that can be
overridden.

This commit takes advantage of that change by removing our creation
of "fake" annotation metadata and overriding getBackPackages to return
the auto-configuration packages instead.

Closes gh-7744
8 years ago
Spring Buildmaster a2696bf873 Next Development Version 8 years ago
Andy Wilkinson 4ea7dc6f31 Polish "Upgrade to Flyway 4.0"
See gh-5344
8 years ago
Eddú Meléndez a270c13d6f Upgrade to Flyway 4.0
Closes gh-5344
8 years ago
Phillip Webb 8747e039ee Merge branch '1.5.x' 8 years ago
Phillip Webb fa6a138598 Refine ImportsContextCustomizer cache logic
Update `ImportsContextCustomizer` so that whenever possible a more
specific cache key is used.

Prior to this commit the customizer would generate a key based on *all*
annotations on the test class. This has repeatedly caused issues where
test classes that should have the same cache key did not due to
unrelated annotations.

A new `DeterminableImports` interface has been added that can be
implemented by `ImportSelector` and `ImportBeanDefinitionRegistrar`
implementations that are able to determine their imports early. The
existing `ImportAutoConfigurationImportSelector` and
`AutoConfigurationPackages` classes have been retrofitted with
this interface.

Fixes gh-7953
8 years ago
Andy Wilkinson 31b0e81765 Add @FunctionalInterface to remaining public and protected interfaces
See gh-6857
8 years ago
Eddú Meléndez 3d52c86a21 Annotate interfaces with @FunctionaInterface
Closes gh-6857
8 years ago
Andy Wilkinson bed727ae8c Merge branch '1.5.x' 8 years ago
Andy Wilkinson f34d309548 Formatting 8 years ago
Spring Buildmaster ed1ce140c0 Next Development Version 8 years ago
Andy Wilkinson 5d24c9c589 Merge branch '1.5.x' 8 years ago
Andy Wilkinson f5445ba5ff Remove OnValidatorAvailableCondition as it is now redundant
Previously, Hibernate Validator would fail to initialize if it was
on the classpath but an EL implementation was not.
OnValidatorAvailableCondition protected against this scenario by
initializing the validator.

The Hibernate Validator shortcoming was addressed in eb222209
(gh-7598). As a result, checking for the precences of the
ValidationProvider META-INF/services resource is now sufficient to
auto-configure validation. This commit removes
OnValidatorAvailableCondition as it is no longer necessary.

Closes gh-8110
8 years ago
Andy Wilkinson 4993f32da8 Merge branch '1.5.x' 8 years ago
Brian Clozel de98c4b3ff Provide Reactor 3 auto-configuration
This commit provides auto-configuration for the Reactor Core 3 library.
A new configuration namespace, "spring.reactor" allows to configure
hooks on operators, like "spring.reactor.stacktrace-mode.enabled".

This property is enabled automatically by devtools, since it improves
the developer experience and provides full stacktrace information when
exceptions occur (but at a performance cost).

Fixes gh-7302
8 years ago
Andy Wilkinson f823599d1f Replace @PostConstruct validation with setter validation
Closes gh-7579
8 years ago
Andy Wilkinson 05831e4b87 Merge branch '1.5.x' 8 years ago
Andy Wilkinson 37cf31f450 Upgrade to Couchbase Java Client 2.3.7
In version 2.3.6 and earlier, an attempt to create a Bucket or a
ClusterInfo would fail fast with a ConnectException in the cause of
the Couchbase server was done. In 2.3.7 this remains true for a
Bucket but is no longer the case for ClusterInfo. The latter now
retries for 75 seconds by default and when it eventually fails a
ConnectException is no longer part of the cause chain.

This commit makes the auto-configured ClusterInfo depend on the
auto-configured Bucket. This means that the Bucket is always created
before the ClusterInfo, thereby ensuring that things fail gracefully
with useful diagnostics when the server is unavailable.

Closes gh-8092
8 years ago
Andy Wilkinson 9bba73a1a9 Upgrade to Thymeleaf 3 and drop support for Thymleaf 2
This commit raises the minimum supported version of Thymeleaf to
3.0.x. It also upgrades Spring Social to a version that is compatible
with Thymeleaf 3.

Closes gh-7450
Closes gh-6258
See gh-7885
8 years ago
Stephane Nicoll 661fd848eb Merge branch '1.5.x' 8 years ago
Stephane Nicoll 505e7f75ea Polish contribution
Closes gh-8089
8 years ago
dreis d58f38f6f6 Use String.replace() with single char if possible
See gh-8089
8 years ago
Stephane Nicoll 551bfb2c60 Polish contribution
Closes gh-8103
8 years ago
Johnny Lim 32f9e90de5 Replace 'String.length() == 0' with 'String.isEmpty()'
See gh-8103
8 years ago
Stephane Nicoll d67ce78e8b Merge branch '1.5.x' 8 years ago
Johnny Lim e0de28a1f7 Polish
Closes gh-8076
8 years ago
Andy Wilkinson 0148276c05 Remove unnecessary warning suppressions 8 years ago
Phillip Webb 8ffaa54e74 Merge branch '1.5.x' 8 years ago
Phillip Webb b0e06c30a0 Polish 8 years ago
Phillip Webb de50cfa21e Make OnClassCondition an AutoConfigurationImportFilter
Update OnClassCondition to implement AutoConfigurationImportFilter so
that auto-configuration candidates can be filtered early. The
optimization helps to improve application startup time by reducing
the number of classes that are loaded.

See gh-7573
8 years ago
Phillip Webb 20a20b7711 Add AutoConfigurationImportFilter support
Add `AutoConfigurationImportFilter` strategy interface which can be used
to filter auto-configuration candidates before they are loaded.

See gh-7573
8 years ago
Phillip Webb 02641a8207 Optimize AutoConfigurationSorter
Optimize `AutoConfigurationSorter` by used properties generated by the
annotation processor whenever possible. The removes the need for each
candidate class to be ASM parsed just to access the order annotations.

See gh-7573
8 years ago
Phillip Webb 1cbda9bd60 Add AutoConfigurationMetadata abstraction
Add AutoConfigurationMetadata interface and a an internal loader that
allows easy access to data written by `spring-boot-configure-processor`.

See gh-7573
8 years ago
Madhura Bhave ca435512c0 Introduce spring-boot-autoconfigure-processor
Add an annotation processor that generates properties files for certain
auto-configuration class annotations. Currently attribute values from
@AutoConfigureOrder, @AutoConfigureBefore, @AutoConfigureAfter and
@ConditionalOnClass annotations are stored.

The properties file will allow optimizations to be added in the
`spring-boot-autoconfigure` project. Primarily by removing the need
to ASM parse as many `.class` files.

See gh-7573
8 years ago
Phillip Webb ccf964eb9a Optimize OnEnabledResourceChainCondition
Optimize OnEnabledResourceChainCondition by removing the DataBinder.
Properties are now read directly from the Environment.

See gh-7573
8 years ago
Phillip Webb f8ded6de63 Don't use DataBinder to work out excludes
Update `AutoConfigurationImportSelector` so that exclude properties
are loaded without invoking a `DataBinder`. This optimization helps
to improve application startup time.

See gh-7573
8 years ago
Phillip Webb cfd5a73b64 Don't call ReflectionUtils do deduce bean type
Update `OnBeanCondition` to no longer call `ReflectionUtils` when
deducing the bean method return type. Since Spring Framework 4.2
the return type has been directly available from `MethodMetadata`.

See gh-7573
8 years ago
Phillip Webb 996afafac6 Optimize OnClassCondition isPresent check
Update `OnClassCondition` to use its own `isPresent` rather than using
`ClassUtils.isPresent`. Using our own implementation saves a few cycles
since we never need to check for native types, and we don't support
nested class references specified in the non `$` notation.

See gh-7573
8 years ago
Phillip Webb 9650668291 Remove dependency from `root` to `condition`
Remove the slightly unusual dependency from the root autoconfigure
pacakge to `condition`. Prior to this commit the link was required in
ordere to populate the `ConditionEvaluationReport`. We now introduce
a `AutoConfigurationImportListener` strategy that allows anyone to
listen for AutoConfigurationImportEvents. The listener implementation
is now used to update the ConditionEvaluationReport.

Fixes gh-8073
8 years ago
Phillip Webb b225b7f33a Rename EnableAutoConfigurationImportSelector
Rename EnableAutoConfigurationImportSelector to the more general
AutoConfigurationImportSelector since it's now used for more than
just the enable annotation.

The existing EnableAutoConfigurationImportSelector class remains in
a deprecated form so that it can be made package-private again in
Spring Boot 2.0.

Fixes gh-8072
8 years ago
Phillip Webb 2c89d9918f Relocate AutoConfigurations from root package
Move PropertyPlaceholder and MessageSource auto-configuration from the
root package to the `context` subpackage.

Fixes gh-8071
8 years ago
Phillip Webb 3893383cbe Merge branch '1.5.x' 8 years ago
Phillip Webb 5703fb1515 Polish 8 years ago
Andy Wilkinson c543101dc1 Merge branch '1.5.x' 8 years ago
Andy Wilkinson 9a79d32f4c Polishing 8 years ago
Andy Wilkinson 79bf7d473c Merge branch '1.5.x' 8 years ago
Andy Wilkinson c86b844477 Remove @Component from ResourceServerFilterChainOrderProcessor
Closes gh-8050
8 years ago
Andy Wilkinson d4c4bc35fd Start building against Spring Data Kay snapshots
See gh-7461
8 years ago
Andy Wilkinson 258595e162 Merge branch '1.5.x' 8 years ago
Andy Wilkinson a30fe9d9ff Update ServerPropertiesTests to tolerate changes in Tomcat 8.5.11
Closes gh-7360
8 years ago
Stephane Nicoll 4fe04178b7 Merge branch '1.5.x' 8 years ago
Stephane Nicoll 915c959a28 Polish contribution
Closes gh-7600
8 years ago
Stephane Nicoll b19d31e067 Use a random port with embedded Mongo by default
This commit improves the logic of the embedded Mongo support to use a
random port if no custom port has been specified. This doesn't change
the default if the embedded support isn't active.

Closes gh-8044
8 years ago
Andy Wilkinson 65fe405f19 Merge branch '1.5.x' 8 years ago
Andy Wilkinson b900a3efc8 Update Actuator endpoints to use custom media type
Previously, the actuator's endpoints produced application/json and,
where appropriate, also consumed application/json. Without a custom,
versioned media type, it's impossible for us to make changes to the
endpoints without breaking clients.

This commit introduces a new media type,
application/spring-boot.actuator.v1+json, that is now produced by
default with application/json also being produced if requested.
Endpoints that consume JSON will now also accept content the uses
the new media type in addition to application/json.

Closes gh-7967
8 years ago