Commit Graph

316 Commits (009ae8822b32dad4c4781ef005674b787ee00228)

Author SHA1 Message Date
Dave Syer b0579c1cf3 Ensure JPA vendor properties are period separated
If you bind to Map<String,Object> you get a nested Map instead
of period-separated keys. This change just makes JpaProperties
expose a Map<String,String> so the keys are sane.

Fixes gh-988
11 years ago
Phillip Webb 11a093bdc0 Polish 11 years ago
Dave Syer 5e3cc95ccf Adjust security.basic.enabled=false behaviour
Actually the web-secure sample is misusing
security.basic.enabled=false (IMO) - it should be a flag
to say that you want to temporarily disable the basic security
fallback on application endpoins, not  way to disable all
security autoconfiguration.

Added test case to web-secure sample to ensure a user
can log in.

Fixes gh-979
11 years ago
Phillip Webb bdcb9407eb Restore commons-logging dependency for spring-boot
Restore the dependency on commons-logging (transitively via spring-core)
for spring-boot. This means that we are not tied directly to SLF4J, but
it is still an option that can be used via `jcl-over-slf4j`.

The `spring-boot-starter-parent` continues to replace `commons-logging`
with `jcl-over-slf4j`.

Fixes gh-981
11 years ago
Phillip Webb 5a5a7be477 Polish 11 years ago
Andy Wilkinson 7a8be3d600 Use Spring Framework bom and fully exclude commons-logging
Closes #955
Closes #978
11 years ago
Andy Wilkinson 47e3a72390 Source code formatting 11 years ago
Craig Walls f006b1231c Add Spring Social autoconfiguration 11 years ago
Phillip Webb 6381fdcb49 Polish 11 years ago
Dave Syer 32295b9bdc Add options for Flyway to have its own DataSource
Either set flyway.[url,user,password] or create a DataSource
@Bean and mark it @FlywayDataSource.

Fixes gh-807
11 years ago
Roy Clarkson 9f52a0dbd7 Add Spring Mobile SitePreferenceAutoConfiguration
New feature in Spring Mobile (user preferences per site).

Fixes gh-946
11 years ago
Dave Syer 68448a8c68 Use the ServerProperties to add prefixes to paths
when server.servletPath is set we need to add prefixes to
the security filter paths.

Fixes gh-945
11 years ago
Dave Syer 4999d41145 Add test for servletMapping() 11 years ago
Dave Syer 660d9e24dc Add servlet path to /error if it is customized
In addition I added some convenience methods to ServerProperties
(servletMapping() and servletPrefix()) for manipulating the
servlet path as provided by the user (e.g. normalizing it into
a valid Servlet mapping path for the DispatcherServlet).

Fixes gh-939, see also gh-936
11 years ago
Andy Wilkinson aaa5b9ddf1 Continue to support spring.jpa.hibernate.namingstrategy
In 1.0, the property spring.jpa.hibernate.namingstrategy could be
used to configure Hibernate's naming strategy. This was at odds with
most other configuration where binding to namingStrategy would require
a property with some indication that it was two separate words, for
example: naming-strategy, naming_strategy, or namingStrategy

This commit adds a new setter, setNamingstrategy, to JpaProperties so
that an app that was using namingstrategy in 1.0 continues to work
in 1.1.

Issue #928
11 years ago
Phillip Webb 1a475102de Polish 11 years ago
apoplexy dfc1979ea2 Allow the tomcat maxHttpHeaderSize to be changed in external config
Prevents large SPNEGO headers from causing server errors for example.
Added the property to ServerProperties.

Fixes gh-931
11 years ago
Andy Wilkinson e45ef06b56 Polish Spring Data Solr integration 11 years ago
Christoph Strobl 6ed69709d7 Add auto configuration support for Spring Data Solr
Registers required components in application context if not available to
set up environment for usage with Spring Data Solr. Will listen on
SolrServer and SolrRepositories for configuration.

By default an HttpSolrServer is registered unless a zkHost (zookeeper
host) is defined. In that case an instance of CloudSolrServer will be
created.

By default multicore support is enabled, creating instances of
SolrServer for each core defined via @SolrDocument.
11 years ago
Dave Syer e9d594c693 Add conditional processing option for unhelpful FactoryBeans
OnBeanCondition has some issues with FactoryBean object types where
the FactoryBean is not generic (i.e. you have to instantiate it to
get its object type). This is a known issue (see tests in
ConditionalOnMissingBeanTests), but we can provide some help for
library authors who know the type in advance. The approach we have
taken here is to check the BeanDefinition for an attribute called
"factoryBeanObjectType" (OnBeanCondition.FACTORY_BEAN_OBJECT_TYPE)
which, if it exists, can be used as a tie-breaker. Its value should
be a Class<?> instance.

Fixes gh-921
11 years ago
Phillip Webb 8bcda1bcbe Polish 11 years ago
Dave Syer e118515d7a Use Flyway to bind flyway.*
Since Flyway has bean properties (with getters and setters)
it can be used to bin directly to the Environment (instead of
copying all the properties into FlywayProperties).

Fixes gh-806
11 years ago
Dave Syer 93a33f0197 Fix test 11 years ago
Andy Wilkinson 2378fe0900 Add support for using Velocity templates 11 years ago
Maciej Walkowiak b33eb95dd2 Added DriverClassNameProvider used for providing jdbc driver class based on jdbc url
Uses known databases from org.flywaydb.core.internal.util.jdbc.DriverDataSource

Fixes gh-824, fixes gh-809
11 years ago
Dave Syer a5543f18b9 Add callback for modifying or inspecting LocalContainerEntityManagerFactoryBean
A callback is added in autoconfig, so that if users inject the EntityManagerFactoryBuilder
into their app and use it to create multiple EntityManagerFactories, they all get the
same deferred DDL behaviour. The deferred DDL can also be disabled by setting
spring.jpa.hibernate.deferDdl=true.

Fixes gh-894
11 years ago
Dave Syer f2e3d94fa1 Use Hibernate native APIs to defer processing DDL
The EntityManagerFactory will happily process the DDL on startup, but
that happens too early (because of LoadtimeWeaverAware processing). We
can defer it to a more civilised stage, e.g. ContextRefreshedEvent by
using the Hibernate native APIs directly.

It makes the JpaProperties slightly more complex because they need
to distinguish between the early init and late processing versions
of the Hibernate properties.

Not ready for prime time yet because there is no way to deal with
multiple EntityManagers.

Fixes gh-894
11 years ago
Dave Syer f572992c5d Relax requirement for groovy template directory to exist
Since groovy-templates is included with groovy-all it is unreasonable
to expect anyone who has it on their classpath to have resolvable templates.
We may need to revisit this decision, but since the origain feature
that drove this was thymeleaf and idaiotic users having it on their
classpath but not using it, maybe we don't need to.
11 years ago
Dave Syer da2e25f90d Add Groovy template engine support for Spring MVC apps
Default suffix .tpl. If groovy-templates is on the classpath user
can now add templates and get them rendered and resolved in an MVC
app.

TODO: Macro helpers for message rendering etc.

See gh-878
11 years ago
Phillip Webb 0b4e2b3667 Polish revisted JMS support
- Add createConnectionFactory method on ActiveMQProperties
- Change getBrokerUrl to return the broker URL and add new deduce method
- Move static methods to end of class
- Apply source formatting
11 years ago
Stephane Nicoll e695e5d637 Revisit JMS support
Since ActiveMQ 5.8.0, the modules structure has been revisited and
activemq-core no longer exists. The activemq-broker is required to
create an embedded broker. Since Boot creates such broker by default
if ConnectionFactory is present, a condition has been added to do so
only when the necessary classes are present in the classpath.

The default embedded broker is now configured to disable message
persistence altogether as this requires an extra jar since 5.8.0, i.e.
activemq-kahadb-store.

Split the ActiveMQ auto configuration from the JmsTemplate auto
configuration so these are totally independent.
ActiveMQAutoConfiguration has been created to detect and configure
the ActiveMQ broker if necessary.

The brokerUrl parameter was ignored as long as the inMemory parameter
was true. The actual brokerUrl to use is now determined by the user
defined values of those parameters: if the brokerUrl is set, it is always
used. If no brokerUrl is set, the value of inMemory determines if an
embedded broker should be used (true) or a tcp connection to an
existing local broker (false).

JmsTemplateAutoConfiguration now creates a JmsTemplate only if a
ConnectionFactory is available.

Fixes gh-872, gh-882, gh-883
11 years ago
Dave Syer 0a11459c3e path->templateLoaderPath 11 years ago
Phillip Webb aaf50a768c spring.freemarker.templateLoaderPath -> path
Fixup tests and documentation following the rename of
spring.freemarker.templateLoaderPath to spring.freemarker.path
11 years ago
Dave Syer d2112e27a3 Add FreeMarkerProperties instead of raw Environment access
It's better for readability and tooling. Changed
templateLoaderPath -> path (simpler and unlikely to clash)
11 years ago
Phillip Webb 01fcf61140 Polish 11 years ago
Dave Syer 7454c4866b Support for @ConfigurationProperties in JPA
Adds JpaProperties to bind to spring.jpa.* (making those
properties easier to reason about and visible in the
/configprops endpoint).

Also allows easy configuration of multiple EntityManagerFactories via new
EntityManagerFactoryBuilder. JpaBaseConfiguration has a @Bean of that type
so users can inject it to create new or additional EntityManagerFactories.
This also simplifies the Hibernate autoconfiguration.

Also renames the DataSourceFactory to DataSourceBuilder (since that's what it
is).
11 years ago
Dave Syer 5249f54c5a Integrate @ConfigurationProperties @Beans with DataSource configuration
We now have a much simpler DataSourceAutoConfiguration that binds to whatever
DataSource concrete type it finds at runtime. To be able to quickly switch between
Hikari and the other types of DataSource there's a minute shim for translating
the common properties (username, password, url, driverClassName), but actually
only url is different. The shim and also DataSource initialization is supported
through DataSourceProperties, but the other native properties get bound directly
through the concrete runtime type of the DataSource.

The /configprops endpoint works (and is exposed in the actuator sample).

Fixes gh-840, fixes gh-477, see also gh-808.
11 years ago
Dave Syer 1b284a0619 Add RelaxedDataSourceFactory 11 years ago
Christian Dupuis 9e56c38b7a Rename DefaulErrorAttributes to DefaultErrorAttributes
fixes #853
11 years ago
Christian Dupuis d8ec2719d7 Fix RedisAutoConfiguration with pool config
fixes #850
11 years ago
Phillip Webb 30ac768cbf Remove @ControllerAdvice from BasicErrorController
Update the BasicErrorController so that it no longer needs to implement
@ControllerAdvice or have an @ExceptionHandler method.

A new ErrorAttributes interface is now used to obtain error details,
the DefaultErrorAttributes implementation uses a
HandlerExceptionResolver to obtain root exception details if the
`javax.servlet.error.*` attributes are missing.

This change also removes the need for the extract(...) method on
ErrorController as classes such as WebRequestTraceFilter can
now use the ErrorAttributes interface directly.

See gh-839, gh-538
Fixes gh-843
11 years ago
Dave Syer 59a899a4da Add @ResponseStatus handler to global exception handler
We might need to revisit this to allow more fine-grained
control by users, but it seems like a sensible default.
The BasicErrorController now uses both of the deafult strategies
(ResponseStatusExceptionResolver and DefaultHandlerExceptionResolver)
from Spring MVC to try and determine an appropriate response.

Fixes gh-839
11 years ago
Phillip Webb dac03fdb7b Extract WebMvcProperties
Extract WebMvcProperties from WebMvcAutoConfiguration and also
update conditionals to use @ConditionalOnProperty.
11 years ago
Phillip Webb 1c0cce441d Add spring.resources.add-mappings property
Add `spring.resources.add-mappings` allowing users to configure if
resource mappings should be added or not.

Fixes gh-804
11 years ago
Phillip Webb 4b51b6f9df Support relaxed names with ConditionalOnProperty
Update ConditionalOnProperty to optionally support relaxed form names.

Fixes gh-835
11 years ago
Maciej Walkowiak b79132ceff Update @ConditionalOnProperty to not match false
Update @ConditionalOnProperty so that properties that are present but
contain the value `false` are not considered a match.

Fixes gh-812
11 years ago
Maciej Walkowiak 56b8faf31b Add @ConditionalOnProperty annotation
Add @ConditionalOnProperty which enables conditional bean creation when
all required properties are defined in the Environment.

Fixes gh-812
11 years ago
Dave Syer f04f265515 Remove some compiler warnings 11 years ago
Marcel Overdijk 0f738be114 Add specifying (fixed) date format via application properties
Fixes gh-778, Fixes gh-755
11 years ago
Dave Syer 41395d08e3 Upgrade flyway to 3.0
Fixes gh-771
11 years ago
Phillip Webb 761b6e3229 Combine FreeMarkerAutoConfigurationTests
Combine and polish FreeMarkerAutoConfigurationTests and
FreeMarkerNonWebappTests
11 years ago
Dave Syer 799f9edb0b Harmonize enabled flags for flyway and liquibase 11 years ago
Dave Syer 2cd7b13096 Drop 'spring' from 'spring.[liquibase,flyway]' 11 years ago
Dave Syer 5548b24c4c Add autoconfig support for Flyway migrations
Flyway starts up with its default settings if it is on the classpath.
You can also ask Boot to barf if the migration scripts are missing.

Fixes gh-730
11 years ago
Marcel Overdijk 68e33b25c1 Added liquibase autoconfiguration for database migrations
If Liquibase is on the classpath it will fire up on startup. Various
config options are available (as well as the option to disable it).
Liquibase uses a YAML format for changes (in classpath:db/changelog).
11 years ago
Dave Syer ed64640ea4 Switch from @Bean to protected method 11 years ago
Phillip Webb 4248665fcd Remove freemarkerConfiguration bean
Remove `freemarkerConfiguration` from the FreeMarkerAutoConfiguration
since it should not be needed for most applications.

The previous code also caused problems since it included a
@ConditionalOnBean annotation on a bean that was created in the same
configuration.
11 years ago
Dave Syer cb1b3481be Add support for FreeMarker in non-webapp
The existing freemarker support only works in a webapp. This
change adds a FreeMarker Configuration bean (in both web- and
non webapps) so it can be used to load a Template and render it
(e.g. with Spring's FreeMarkerTemplateUtils).

See gh-679
11 years ago
Artem Bilan ce3aafa7a9 Upgrade to Spring Integration 4.0
Closes #751
11 years ago
Phillip Webb fb13bf9016 Move TemplateAvailabilityProvider
Move TemplateAvailabilityProvider from the spring-boot project to
spring-boot-autoconfigure
11 years ago
Phillip Webb decee8d871 Polish templates code 11 years ago
Marcel Overdijk 1cbef02236 Add messagecode resolver format based on application property 11 years ago
Dave Syer 50190a4de7 Add support for HikariDataSource
We still prefer Tomcat if it is available (that can change
if the community asks loudly enough). Hikari is supported
via the same spring.datasource.* properties as Tomcat (and
DBCP), with some modifications:

* The validation and timeout settings are not as fine-grained
in Hikari, so many of them will simply be ignored. The most
common options (url, username, password, driverClassName) all
work as expected.

* The Hikari team recommends using a vendor-specific DataSource
via spring.datasource.dataSourceClassName and supplying it with
Properties (spring.datasource.hikari.*).

Hikari prefers the JDBC4 isValid() API (encapsulates vendor-
specific queries) which is probably a good thing, but we
haven't provided any explicit support or testing for that yet.

Fixes gh-418
11 years ago
Andy Wilkinson 7c91176186 Add FreeMarker support
This commit adds auto-configuration and a starter,
spring-boot-starter-freemarker, for using FreeMarker view templates in
a web application.

A new abstraction, TemplateAvailabilityProvider, has been introduced.
This decouples ErrorMvcAutoConfiguration from the various view
technologies that Spring Boot now supports, allowing it to determine
when a custom error template is provided without knowing the details of
each view technology.

Closes #679
11 years ago
Dave Syer ef4e83a879 Move ErrorController to autoconfig 11 years ago
Andy Wilkinson b6cd2c970c Use Jedis rather than Lettuce as preferred Redis client
Salvatore has indicated that Jedis is his Java Redis client of choice.
This commit updates the auto-configuration support, actuator and
Redis starter accordingly.

Completes #745
11 years ago
Dave Syer b20262c1a7 Backout couchbase changes 11 years ago
Dave Syer e433eb20a6 Align couchbase more with other data-* support 11 years ago
sopov.ivan 174b654faf minor test fixes
Reverting arguments in assertEquals where constant was placed on
the "actual" place. Replacing assertEquals with assertFalse, assertTrue
and assertNull where applicable.

Fixes gh-735
11 years ago
Dave Syer 6ac85c1759 Add username/password and MongoClientOptions to Mongo config
The username/password option stil lonly works for a single host (to
connect to a cluster I suspect you need to set the URI). Also added
a MongoClientOptions (if a bean of that type exists it will be
used to populate the options that aren't in the URI).

Fixed gh-536
11 years ago
Phillip Webb 5dabd7fb41 Rename MongoTemplateAutoConfiguration
Rename MongoTemplateAutoConfiguration to MongoDataAutoConfiguration
since it now configures more than just the template.
11 years ago
Phillip Webb a7f5cbf7d0 Polish mongo changes
Restore formatting and fixup doc comments.
11 years ago
Phillip Webb 2adf30950e Polish couchbase support
Polish couchbase support to:
- Extract properties into its own class
- Remove unnecessary inner configuration class
- Add since tags
- Format code and add `this.` references
11 years ago
Phillip Webb fba08e7811 Polish 11 years ago
Phillip Webb 1ae91a135c Polish MultipartConfigElement support
Polish MultipartConfigElement changes introduced in commit e8e59ea6
as follows:

- Fix javadoc formatting
- Fix tab/spaces formatting
- Fix asciidoc formatting
- Move creation of MultipartConfigElement into MultipartProperties
- Add @Since tags
- Restore random port in tests
11 years ago
Dave Syer 94dd510b52 Merge GridFs with MongoTemplate configuration 11 years ago
Josh Long 330c95d6ab Update GridFsTemplateAutoConfigurationTests.java
improved documentation
11 years ago
Josh Long 0d53b9d9fa adding initial GridFS integration. 11 years ago
Michael Nitschinger 78ce06ccc7 Add support for spring-data-couchbase
Fixes gh-124
11 years ago
Stephane Nicoll c4ffe721c7 Fix JmsTemplate default pubSubDomain setting
Prior to this commit, a JmsTemplate bean created automatically by Boot
had its "pubSubDomain" flag enabled. It's far more usual to fallback on
queue rather than topic.

This commit flips the default value of the configuration property.
11 years ago
Rob Winch ae7098ae1d Add RepositoryRestMvcAutoConfiguration
Fixes gh-626
11 years ago
Dave Syer 63f2d6ab15 Remove compiler warnings related to Batch upgrade 11 years ago
Dave Syer 3173646635 Fix another test from gh-708 11 years ago
Dave Syer d597cc3387 Fix test broken in gh-708 11 years ago
Roy Clarkson 6ad7257baf Add auto-configuration for @EnableHypermediaSupport
If Spring HATEOAS is on the class path, then @EnableHypermediaSupport
will be auto-configured with HAL support.
11 years ago
Josh Long e8e59ea657 MultipartConfigElement autoconfig support.
Fixes gh-708
11 years ago
Phillip Webb 4119ef5cf4 Use random ports for tests
Update remaining tests to use random ports.

Fixes gh-337
11 years ago
Phillip Webb fad5ce45db Polish 11 years ago
Dave Syer f7c16764e6 Add setter for security.user.role
Fixes gh-700
11 years ago
Marcel Overdijk f78f836fc0 Add fixedlocaleresolver based on application property
If the user sets spring.mvc.locale and doesn't provide a @Bean
of type LocaleResolver then a FixedLocaleResolver will be provided.

Fixes gh-697, fixes gh-669
11 years ago
Dave Syer 0b89402240 Add spring.thymeleaf.contentType (defaults to HTML)
User can specify the content type in external properties now, optionally
ommitting the charset (since that is duplicated). If charset is not
appended by user Spring will do it.

Fixes gh-671
11 years ago
Dave Syer 97adb5c1b3 Ensure ddl-auto=none for non-embedded database
A more thorough check is needed to avoid the false assumption
that the DataSource is embedded just because an embedded database
is on the classpath. You really have to try and look in the connection
metadata, so that's what we now do.

Fixes gh-621, fixes gh-373
11 years ago
Phillip Webb beaddb2362 Polish 11 years ago
Dave Syer 006d7b6931 Move MongoTemplateAutoConfiguration to mongo package 11 years ago
Dave Syer 59124d07c4 Switch on @EnableTransactionManagement by default
Fixes gh-576
11 years ago
Stephane Nicoll 87321edf36 Support Tomcat uri encoding (with UTF-8 default)
Introduce an extra `server.tomcat.uri-encoding` property used to
configure the URI encoding for the embedded tomcat container.

Defaults to `UTF-8` instead of the usual tomcat default of `ISO-8859-1`.

Fixes gh-540
11 years ago
Dave Syer 770c115d88 Allow Batch configuration without DataSource
If the user provides a JobExplorer and a BatchConfigurer that
don't require a DataSource we can back off on configuring ours
(and anything else that needs a DataSource).

Fixes gh-561
11 years ago
Dave Syer 4637c2a8f7 Accept viewNames and excludedViewNames for ThymeleafViewResolver
(via spring.thymeleaf.*).

Fixes gh-548
11 years ago
Phillip Webb 3193913899 Polish 11 years ago
Chris Savory 7be2d97d49 Allow multiple MessageSources that are comma separated.
Fixes gh-532, Fixes gh-506
11 years ago