Commit Graph

329 Commits

Author SHA1 Message Date
Andy Wilkinson f8cffd745c Merge branch '1.2.x' 2015-10-16 10:42:26 +01:00
Andy Wilkinson 35a3f4a1c0 Reinstate the use of shutdown hooks in the tests
Commit adf2c44b was an attempt to prevent HSQLDB from throwing an
exception when the JVM exits. This was achieved by disabling the
application context’s shutdown hook in the tests. This had the unwanted
side effect of causing tests’ application contexts not to be closed. The
reported symptom was that @Destroy methods were no longer being invoked.
We need a different solution to the problem.

The exception was:

Caused by: org.hsqldb.HsqlException: Database lock acquisition failure: attempt to connect while db opening /closing
    at org.hsqldb.error.Error.error(Unknown Source)
    at org.hsqldb.error.Error.error(Unknown Source)
    at org.hsqldb.error.Error.error(Unknown Source)
    at org.hsqldb.DatabaseManager.getDatabase(Unknown Source)
    at org.hsqldb.DatabaseManager.newSession(Unknown Source)
    ... 23 common frames omitted

I originally thought this was due to a race between the application
context’s shutdown hook and HSQLDB’s shutdown hook, however HSQLDB
doesn’t use a shutdown hook. I believe that the problem is due to 
an HSQLDB database being created with shutdown=true in its URL, similar
to the problem described here [1]. This will shut down the database when
the last connection to it is closed, however the shutdown will happen
asynchronously. If the JVM then runs the application context’s shutdown
hook, EmbeddedDatabaseFactory will attempt to connect to the database to
execute the SHUTDOWN command. This executes synchronously but will race
with the asynchronous shutdown that’s executing as a result of
shutdown=true in the JDBC url and the last connection to the database
being closed. 

This commit reinstates the use of application context shutdown hooks in
the tests, and updates the documentation to recommend that, if a user
manually configures the URL for their embedded database, they do so 
in such a way that the database doesn’t shutdown automatically, thereby
allowing the shutdown to be driven by application context close.

Closes gh-4208

[1] http://sourceforge.net/p/hsqldb/bugs/1400/
2015-10-16 10:36:20 +01:00
Phillip Webb 922f8b6ba6 Add `server.session.store-dir` support
Add support for a `server.session.store-dir` property which can be used
to specify where session data source be saved.

Fixes gh-4191
2015-10-14 22:56:01 -07:00
Phillip Webb 143536f72d Polish 2015-10-14 12:52:38 -07:00
Stephane Nicoll 4fca78a9fc Clarify debug mode
Closes gh-3853
2015-10-14 15:59:44 +02:00
Stephane Nicoll 496744486c Add links to sample auto-configuration classes
Closes gh-3767
2015-10-14 15:14:20 +02:00
Stephane Nicoll 06c78a41cd Document that ConfigurationProperties can't use SpEL
Closes gh-1768
2015-10-14 14:36:33 +02:00
Stephane Nicoll cca153e986 Document how to return custom JSON on errors
Closes gh-3999
2015-10-14 14:16:45 +02:00
Phillip Webb e2fc30ef24 Polish 2015-10-14 00:20:32 -07:00
Phillip Webb ab7bec1160 Update clarify of bean conditions
See gh-4104
2015-10-14 00:20:32 -07:00
Stephane Nicoll a7bdef61de Clarify usage of `@ConditionalOn[Missing]Bean`
Closes gh-4104
2015-10-13 18:55:47 +02:00
Stephane Nicoll e221dfc3a6 Clarify ConversionService initialization
Spring Boot will eagerly initialize a `ConversionService` named
`conversionService` for configuration keys processing. This commit adds
a note in the documentation regarding that special behaviour.

Closes gh-4162
2015-10-13 17:39:31 +02:00
Andy Wilkinson a899058ac3 Add a tip to the docs about using DB_CLOSE_ON_EXIT=false with H2
Closes gh-4135
2015-10-12 18:08:17 +01:00
Andy Wilkinson 4968900b1d Gracefully disable Solr auto-configuration when Solr 5 is on classpath
Previously, if Solr 5 was on the classpath, SolrAutoConfiguration
would fail with a rather cryptic error message due to a change in the
inheritance hierarchy of CloudSolrServer between Solr 4 and Solr 5.

This commit updates SolrAutoConfiguration to be conditional on a
class that exists in Solr 4 but was removed in Solr 5. This has the
effect of switching off the auto-configuration when Solr 5 is on
the classpath, allowing the auto-configuration report to be used to
identify why the configuration was disabled. The documentation has
also been updated to state that Spring Boot does not currently support
Solr 5.0.

Closes gh-2795
2015-10-08 16:24:05 +01:00
Andy Wilkinson 01eb4cf954 Rework breaking API changes
This commit changes the new mode-based configuration to use two new
methods – setBannerMode on SpringApplication and bannerMode on
SpringApplicationBuilder. The old methods, setShowBanner and
showBanner on SpringApplication and SpringApplicationBuilder
respectively, have been reinstated and deprecated.

Closes gh-4001
2015-10-08 14:41:50 +01:00
“Jeremy 3090659971 Add an option to log banner rather than printing it to standard out
This commit adds the option to output the banner using the logger
instead of standard out. Rather than taking a boolean
spring.main.show-banner is now configured using an enum. Three values
are supported:

 - LOG: the banner is logged
 - CONSOLE: the banner is printed to standard out (previously true)
 - OFF: the banner is switched off (previously false)

The default behavior remains unchanged; the banner will be printed to
standard out.

Closes gh-4022
See gh-4001
2015-10-08 14:41:50 +01:00
Andy Wilkinson 2292cff1ea Document the need to use spring.data.mongodb.uri with Mongo 3.0
Closes gh-4051
2015-10-05 15:22:26 +01:00
Ray Sinnema 5dc2290608 Fix typos
Closes gh-4083
2015-10-03 11:51:55 +02:00
izeye 5b211706c0 Polish
Closes gh-4069
2015-10-01 09:56:33 +02:00
Dave Syer cad2666522 Add support for LOG_LEVEL_PATTERN replacing the default level pattern
For logback we also support logging.pattern.level as a synonym.

Fixes gh-4062
2015-09-30 17:15:34 +01:00
Julien Dubois c401330901 Add Cassandra support
Add auto-configuration support and health checks for Cassandra and
Spring Data Cassandra.

Fixes gh-2064
Closes gh-2214
2015-09-25 23:00:53 -07:00
izeye 1f91c342e1 Polish doc
Closes gh-3933
2015-09-09 17:37:09 +02:00
Phillip Webb 6193b640a4 Polish 2015-09-02 23:44:19 -07:00
Tommy Ludwig 4a27ea563a Add link to Hazelcast documentation
Closes gh-3866
2015-09-02 15:30:36 +02:00
Stephane Nicoll 721b5a2395 Hazelcast auto-configuration
Provide a general purpose Hazelcast integration (i.e. not tied to caching).

Auto-configure a `HazelcastInstance` either based on the presence of a
`Config` bean or a configuration file. Said configuration file can be
specified explicitly or automatically found from default locations.

The cache integration already supports Hazelcast so it has been reworked
to automatically reuse an existing `HazelcastInstance` if available.

Closes gh-2942
2015-08-27 10:45:04 +02:00
Dave Syer 67483bb73c Only use Converters which are @ConfigurationPropertiesBinder qualified
Users sometimes create beans of type Converter and don't expect that to
automatically trigger a cascade of early initialization. This change adds
a qualifier to the Converters that are used by @ConfigurationProperties,
so they can be isolated (and simple).

Fixes gh-2669
2015-08-26 17:27:35 +01:00
Dave Syer 538afc4ab1 Make some methods in BasicErrorController protected
Spring MVC requires all handlers for the same path to be on the same handler
so if anyone wants to add new handlers for different content types they
have to copy a lot of code from BasicErrorController. This change increases
the visibility of the basic utility methods in BasicErrorController so that
custom handlers can be added easily.

Fixes gh-3828
2015-08-26 17:27:35 +01:00
Andy Wilkinson 003268fb4e Add support for @WebFilter, @WebListener, @WebServlet
This commit adds a new annotation, @ServletComponentScan, that can be
used to enable scanning for @WebFilter, @WebListener, and @WebServlet
annotated classes. Registration beans will be automatically created for
any classes that are found, with the configuration derived from the
annotation.
2015-08-26 15:58:52 +01:00
Stephane Nicoll efd1f6094a Merge branch '1.2.x' 2015-08-25 15:22:24 +02:00
Stephane Nicoll 6393569d42 Polish Externalized Configuration section
Closes gh-3823
2015-08-25 15:22:02 +02:00
Stephane Nicoll 63d157bb7c Favor JSR-107 provider if present
Previously, native cache libraries were favored over a standard JSR-107
implementation. If a user has a working setup using JCache with one
provider and switch to another provider, his setup may be broken if we
happen to provide a native support for the new provider.

We now consistently favor JSR-107 if it is present. Native support can
still be enabled via the `spring.cache.type` property.

Closes gh-3822
2015-08-25 15:07:24 +02:00
Stephane Nicoll 7c0c953f81 Add value alias for SpringApplicationConfiguration
Given that Spring Boot uses java config accross the board, a new `value`
attribute is now aliased to the existing `classes` attribute such that
one could write the following:

@SpringApplicationConfiguration(MyConfig.class)
public class MyTest {}

Closes gh-3635
2015-08-19 17:09:34 +02:00
Josh Thornhill c13622ea29 Fix typo
Closes gh-3721
2015-08-15 17:55:53 +02:00
Stephane Nicoll 2d62e1fc89 Add a property to configure the connection pool
A new `spring.datasource.type` property can now be used to configure the
connection pool implementation to use (rather than only relying on Boot's
preferences).

Closes gh-3705
2015-08-14 13:30:14 +02:00
Stephane Nicoll e4b81b173c Polish 2015-08-14 13:21:15 +02:00
Stephane Nicoll 960d6eadba Spring Boot starter section
Improve the documentation to explain the necessary steps to create a
custom Spring Boot starter. In particular, provide more details regarding
naming conventions.

Closes gh-2537
See gh-2927
2015-08-14 10:51:38 +02:00
Andy Wilkinson 51dd806a98 Detect ConfigurableWebBindingInitializer bean and register with MVC
Previously, to use a custom ConfigurableWebBindingInitializer, it was
necessary to extend WebMvcConfigurationSupport and override
getConfigurableWebBindingInitializer. This had the unwanted
side-effect of switching off the auto-configuration of Spring MVC.

This commit updates the auto-configuration to look for a
ConfigurableWebBindingInitializer bean and register it with Spring
MVC.

Closes gh-2526
2015-08-13 15:20:59 +01:00
izeye eab7eff047 Polish documentation
Closes gh-3738
2015-08-13 12:58:53 +01:00
Dave Syer 68af0a73ec Clarify documentation in a few areas
Fixes gh-3527
2015-08-10 11:50:48 +01:00
Stephane Nicoll bae3dcba33 Polish error pages documentation
Make it more clear that the `ErrorPage` path requires an URL mapping to
be registered.

Closes gh-3698
2015-08-07 10:05:02 +02:00
Andy Wilkinson 1a11ed20ba Provide a property to configure conversion word used to log exceptions
This commit adds a new property, logging.exception-conversion-word,
that can be used to configure the conversion word that is used when
logging exceptions. The default value, %rEx, will log exceptions
with the root cause first and include class packaging information in
the stack trace. The new property is supported when using either
Logback or Log4J2.

Closes gh-3684
2015-08-06 11:37:54 +01:00
Stephane Nicoll 89c3d2ea12 Improve MongoDB documentation
Explicitly mention that `spring.data.mongodb.uri` can be used to
customize additional settings such as replica set.

Closes gh-2624
2015-08-05 15:06:12 +02:00
Andy Wilkinson 2a5a32b603 Add auto-configuration for H2’s web console
Three conditions must be met for the console to be enabled:

 - H2 is on the classpath
 - The application is a web application
 - spring.h2.console.enabled is set to true

If spring-boot-devtools is on the classpath, spring.h2.console.enabled
will be set to true automatically. Without the dev tools, the enabled
property will have to be set to true in application.properties.

By default, the console is available at /h2-console. This can be
configured via the spring.h2.console.path property. The value of this
property must begin with a '/'.

When Spring Security is on the classpath the console will be secured
based on the user's security.* configuration. When the console is
secured, CSRF protection is disabled and frame options is set to
SAMEORIGIN for its path. Both settings are required in order for the
console to function.

Closes gh-766
2015-08-05 10:54:03 +01:00
Stephane Nicoll bfe930a873 Auto-configure @EnableConfigurationProperties
Add an auto-configuration that avoid a Spring Boot user to add
`@EnableConfigurationProperties` to its configuration to benefit from
that feature.

As our own auto-configurations are tested independently, such annotation
is still present to avoid a useless reference to this new
auto-configuration.

Closes gh-2457
2015-08-04 13:59:57 +02:00
Phillip Webb 891dd5a0f6 Polish 2015-08-03 11:03:48 -07:00
izeye ee6fc8d917 Fix typos
Closes gh-3608
2015-07-28 08:54:47 +02:00
Stephane Nicoll 34891c27de Polish
Closes gh-3566
2015-07-23 11:53:52 +02:00
drumonii fbf6574b51 Document validation of nested components
See gh-3566
2015-07-23 11:53:06 +02:00
Lucas Saldanha bf303b02f7 Add configuration properties validation sample
Create a new project sample that demonstrate the usage of
@ConfigurationProperties with configurationPropertiesValidator.

Fixes gh-3513
2015-07-23 11:42:55 +02:00
izeye 31d8a647d0 Fix typos
Closes gh-3531
2015-07-17 09:08:47 +02:00
Phillip Webb 08d1f6daf5 Allow persistent servlet sessions across restarts
Update Tomcat, Jetty and Undertow to serialize session data when the
application is stopped and load it again when the application restarts.

Persistent session are opt-in; either by setting `persistentSession`
on the ConfigurableEmbeddedServletContainer or by using the property
`server.session.persistent=true`.

Fixes gh-2490
2015-07-16 17:29:20 -07:00
Sebastien Deleuze 4405ae4eaf Add CORS documentation
Closes gh-3052
2015-07-16 17:41:54 +01:00
Andy Wilkinson 9f9f21207f Document support for comma-separated list of names in <springProfile>
See gh-3493
2015-07-16 17:34:11 +01:00
Andy Wilkinson f9ab189262 Correct the link to Embedded Mongo in the reference documentation 2015-07-16 17:04:14 +01:00
Stephane Nicoll d9939a5be2 Map FATAL level for Log4j
Make sure that Boot's FATAL level is mapped to log4j and log4j2 properly.

Fixes gh-3518
2015-07-16 17:59:04 +02:00
Andy Wilkinson 2c81907d58 Flesh out and polish Embedded MongoDB auto-configuration contribution
Embedded MongoDB is now auto-configured when it is on the classpath.
The Mongo instance will listen on the port specified by the
spring.data.mongodb.port property. If this property has a value of
zero and randomly allocated port will be used. In such an event, the
MongoClient created by MongoAutoConfiguration will be automatically
configured to use the port that was allocated.

By default, MongoDB 2.6.10 will be used. This can be configured using
the spring.embedded-mongodb.version property. Mongo's sync delay
feature is enabled by default. This can be configured using the
spring.embedded-mongobd.features property.

Closes gh-2002
2015-07-16 16:34:18 +01:00
izeye f4589e7cc3 Fix typos
Closes gh-3504
2015-07-15 15:45:02 +02:00
Melvin Kicchi 3d83c6fcb2 Fix typo in jOOQ example code
Closes gh-3461
2015-07-10 13:54:00 -07:00
Phillip Webb eeb947b382 Polish docs 2015-07-09 12:56:03 -07:00
Phillip Webb 582239b03b Add ApplicationArguments and ApplicationRunner
Add ApplicationArguments interface which allows SpringApplication.run
arguments to be injected into any bean. The interface provides access
to both the raw String[] arguments and also provides some convenience
methods to access the parsed 'option' and 'non-option' arguments.

A new ApplicationRunner interface has also been added which is
similar to the existing CommandLineRunner.

Fixes gh-1990
2015-07-08 23:27:13 -07:00
Stephane Nicoll a073a505ae Move spring.oauth2.* to security.oauth2.*
Unfortunately, we have no other choice to flip the ignoreUnknownFields
attribute of `SecurityProperties` has many different target are now set
for that namespace outside the class. See gh-3445 for a potential way
to improve that.

Closes gh-3327
2015-07-08 18:26:25 +02:00
Phillip Webb e885dab752 Polish 2015-07-07 15:17:03 -07:00
Stephane Nicoll 406d4ea771 Polish 2015-07-07 17:19:00 +02:00
Stephane Nicoll 4602558a73 Polish AMQP doc
Closes gh-3431
2015-07-07 17:14:20 +02:00
Lucas Saldanha 0ce7be4413 Add AMQP section to the documetation
Closes gh-3348
2015-07-07 16:31:20 +02:00
Marten Deinum a3e62676af Extend TemplateViewResolverProperties for Groovy
Use AbstractTemplateViewResolverProperties as the base class for
GroovyTemplateProperties since the Spring GroovyMarkupViewResolver is
an AbstractTemplateViewResolver.

The auto-configuration for Groovy is now more aligned with the existing
Freemarker and Velocity auto-configuration, with a `resourceLoaderPath`
property being used instead of `prefix`.

Fixes gh-3365
Closes gh-3374
2015-07-06 14:45:28 -07:00
Stephane Nicoll 0eada5df86 Merge branch '1.2.x' 2015-07-06 14:01:56 +02:00
Stephane Nicoll 2126c7774a Add a note about transactional listeners
Clarify how the default JMS listener container factory is created if none
exists with regards to transactions.

Issue: SPR-3407
2015-07-06 11:03:44 +02:00
Phillip Webb 35379f627a Polish 2015-07-05 22:34:36 -07:00
Dave Syer eb49f4bfec Documentation for default profiles 2015-07-03 15:52:37 +01:00
Phillip Webb b5c435f8c4 Polish Actuator MVC customization support
See gh-3345
2015-06-30 22:09:38 -07:00
Dave Syer 1e464da248 Refactor the Actuator MVC configuration to allow more customization
There is a new spring.factories entry for
org.springframework.boot.actuate.autoconfigure.EndpointWebMvcConfiguration
which loads extra beans into the MVC config for the Actuator.
If the management context is a child context all the beans go in the
child (except the Spring Security filter still). A big bonus is that
you can add WebConfigurerAdapters to configure static resources etc.
A new component called ManagementContextResolver can be used to
locate the ApplicationContext for the MVC endpoints.

Fixes gh-3345
2015-06-30 09:42:58 +01:00
Phillip Webb d213cc05d5 Polish 2015-06-29 16:48:59 -07:00
Stephane Nicoll a6ccb4a6e0 Polish
Polish resource handling chain support. Make sure that the chain is
enabled automatically if at least one strategy is enabled.

See gh-1604
2015-06-28 06:32:07 -07:00
Brian Clozel dd561d15cf Improve Spring Resource Handling support
This commit improves support of the Resource Handling features
introduced in Spring Framework 4.1. Those features add new ways to
resolve and transform static resources in applications.
See [this blog
post](https://spring.io/blog/2014/07/24/spring-framework-4-1-handling-static-web-resources)
for more details.

The `ResourceUrlEncodinFilter` is added for compatible template engines:
Velocity and Thymeleaf. It assists them with rewriting the URLs of
static resources when rendering templates.

New keys are added in the `ResourceProperties` in order to configure
the Resource Handling chain. `ResourceResolvers` and
`ResourceTransformers` are registered accordingly in
`WebMvcAutoConfiguration`.

Here is an example of enabling a `ContentVersionStrategy` on all
static resources, meaning their names will be changed for cache
busting purposes by adding a content hash at the end of the file name.
Like "/js/jquery.js -> /js/jquery-872ca6a9fdda9e2c1516a84cff5c3bc6.js".

```
spring.resources.chain.enabled:true
spring.resources.chain.strategy.content.enabled:true
spring.resources.chain.strategy.content.paths:/**
```

Closes gh-1604
Closes gh-3123
2015-06-28 06:32:07 -07:00
Phillip Webb 4f072f4046 Update logging documentation
Update logging documentation to show the new `-spring` convention and
the Logback extensions.

See gh-1788
See gh-2558
See gh-3338
2015-06-26 15:59:08 -07:00
Phillip Webb 855e5a8e5f Minor doc polish 2015-06-24 20:42:16 -07:00
Geoffrey Chandler d6200389eb Add support for ANSI colored resource banners
Add AnsiPropertySource which allows named ANSI codes to be resolved
and update ResourceBanner to include it.

This commit also deprecates constants defined in AnsiElement and
replaces them with AnsiStyle, AnsiColor and AnsiBackground enums.

Closes gh-2704
2015-06-23 14:31:49 -07:00
Dave Syer 92a6e3188b Correct Spring Data REST docs 2015-06-23 09:41:28 +01:00
Phillip Webb 7fd07b6588 Document jOOQ support
Closes gh-2804
2015-06-22 21:20:12 -07:00
Stephane Nicoll 347cbb1ca4 Merge branch '1.2.x' 2015-06-22 10:44:37 +02:00
Stephane Nicoll 5f2ffdb9e2 Update SnakeYAML link
Closes gh-3302
2015-06-22 10:44:23 +02:00
Phillip Webb 3e4bbf05cd Document Apache Artemis support
See gh-3154
2015-06-18 21:00:34 -07:00
Andy Wilkinson fd6d61e8b4 Add auto-configuration support for Spring Session
This commit adds support for automatically configuring Spring Session.
In a web application when both Spring Session and Spring Data Redis
are on the classpath, Spring Session's Redis Http Session support
will be auto-configured. The max inactive interval for Redis-backed
sessions can be configured via the environment using the existing
server.session-timeout property.

Closes gh-2318
2015-06-18 14:52:59 +01:00
Stephane Nicoll b5d49b3099 Expose additional admin features
Improve SpringApplicationAdminMXBean to expose additional information:

* Whether the application uses an embedded container
* The properties exposed by the `Environment`

This allows to know if the application is web-based and the HTTP port
on which it is running.

Closes gh-3067
2015-06-17 11:52:18 +02:00
Andy Wilkinson eab599bd38 Merge branch '1.2.x' 2015-06-15 14:25:41 +01:00
Andy Wilkinson 0253f21f2f Update the link to Bitronix's documentation
Closes gh-3207
2015-06-15 14:25:24 +01:00
Stephane Nicoll bb4c89592d Merge branch '1.2.x' 2015-06-14 09:36:25 +02:00
Stephane Nicoll 01ba732a73 Consistent use of "=" for property key
Closes gh-3218
2015-06-14 09:36:10 +02:00
Phillip Webb ad7ed1dbae Formatting 2015-06-10 11:26:39 -07:00
Stephane Nicoll c1dea3797a Add documentation for SpringApplicationAdminMXBean
Closes gh-3179
2015-06-10 13:46:37 +02:00
Stephane Nicoll 8c8fce5b0f Merge branch '1.2.x'
Conflicts:
	spring-boot-docs/src/main/asciidoc/appendix-application-properties.adoc
2015-06-08 15:18:45 +02:00
Stephane Nicoll e16f5d03ab Add reference to Mustache to documentation
Closes gh-3121
2015-06-08 15:16:01 +02:00
John Tims 07a688968d Fix typo
Closes gh-3140
2015-06-06 13:36:15 +02:00
Phillip Webb 98b6fafe92 Fix broken docbook 2015-06-05 16:31:41 -07:00
Phillip Webb c7677d10ca Polish documentation 2015-06-05 15:58:14 -07:00
ceilfors 5fb67af25f Remove spock caveat that was fixed in 1.0
Closes gh-3072
2015-06-04 14:51:14 +02:00
Phillip Webb 312471f996 Polish documentation 2015-06-04 01:09:59 -07:00
Stephane Nicoll fca192fa41 Add spring-boot-starter-cache
Closes gh-3098
2015-06-03 17:29:57 +02:00
Josh Thornhill 10f7031e46 Fix typo in documentation
Closes gh-3077
2015-06-02 11:50:49 +02:00