Commit Graph

564 Commits (88828f5097dd1161e753f1c1dacb07c36cfe1ab8)

Author SHA1 Message Date
Dave Syer e8fcb0c875 Use classname instead of value in @ConditionalOnMissingClass
See gh-1065
11 years ago
Phillip Webb 3007a777d0 Roll back to 1.1.0.BUILD-SNAPSHOT 11 years ago
Dave Syer 36130b27e1 Support for Jmx (and Integration) autoconfig in parent contexts
When there are parent contexts we already had a strategy for registering
the actuator endpoints, but not the regular JMX or Integration MBeans.
This chnage makes the autoconfigs for JMX aware of the parent context.

Also adds a sample with a parent context.

See gh-847
11 years ago
Spring Buildmaster c650f2391e Next development version 11 years ago
Phillip Webb b5d267ca89 Polish 11 years ago
Phillip Webb 2ad4c47d18 Polish 11 years ago
Dave Syer dcb17a7cb5 Enhance @Conditionals for JMX autconfig
Fixes gh-1059
11 years ago
Roy Clarkson 1a32a6a06b Fix issues with DeviceDelegatingViewResolverAutoConfiguration
- Log to the correct class
- Set Auto-configure after Thymeleaf hint on main class instead of
  internal static class
- Use 'thymeleafViewResolver' bean name instead of class for
  conditional bean checks
- Fix class name in properties documentation

Fixes gh-1052
11 years ago
Dave Syer aa30fdba18 Add MBeanServer @Bean in case it is needed
Anywhere that an MBeanServer is needed it should be
created @Conditionally, so that user can exclude the
JmxAutoConfiguration and still get the other JMX
behaviours automatically.
11 years ago
Dave Syer 1a5c4f88b4 Fix compilation error 11 years ago
Dave Syer 39a94428d3 Add @Conditionals to permit JPA/Mongo mixed usage
I decided to go with both approaches (make the autoconfig for
repositories @ConditionalOnMissingBean(RepositoryFactoryBeanSupport),
so the first one wins; and also make them conditional on
spring.data.*.repositories.enabled=true. The ordering problem
is still there really (it's not defined which repositories will
be created by the autoconfig), so if a user is going to have
2 repository implementations on the classpath, he is going to
have to either choose one to disable, or manualy @Enable* the
other one.

Fixes gh-1042
11 years ago
Phillip Webb 2852f7422e Polish Spring Mobile Auto-configuration
Update Spring Mobile support with the following changes:
- Apply source formatting
- User lowercase property prefixes
- Use dashed notation when accessing properties
- Inline some constants

See gh-1049
11 years ago
Dave Syer 6902f2ac97 Revert on bean condition for mongo repositories 11 years ago
Dave Syer dd176ccacf Fix broken test (ordering) 11 years ago
Dave Syer 376d6fb9bc Add test for mixed Mongo/Jpa repositories 11 years ago
Dave Syer e81e94924c Fix Devc->Devic
(Leaving the docs changes for later)

Fixes gh-1049
11 years ago
Craig Walls f2351f1ece Add ProviderSignInController for Spring Social
Update SocialWebAutoConfiguration to add a ProviderSignInController.
Also fix default UserIdSource.

Fixes gh-1050
11 years ago
Roy Clarkson 8f32b87c81 Improve Spring Mobile Auto-configuration
- Upgrade Spring Mobile dependency to 1.1.2
- Rename SitePreferenceAutoConfiguration "enabled" property
- Add Auto-configuration for LiteDeviceDelegatingViewResolver
- Update docs

Fixes gh-1049
11 years ago
Phillip Webb e891aa3525 Polish 11 years ago
Phillip Webb 93aefa8537 Polish Flyway and Liquibase
Extract common "depends on" functionality to a new
EntityManagerFactoryDependsOnPostProcessor class.

Apply consistent formatting.

Fix issue with Flyway location detection.
11 years ago
Phillip Webb 4a6e66fe8b Polish ConditionalOnJava
Apply formating and simplify the condition implementation. Delegate
to Spring's JdkVersion class to obtain the running version.
11 years ago
Phillip Webb e032b673a2 Polish DataSourceInitialization code
Rename a few classes and methods relating to DataSourceInitialization
and update the DataSourceInitializedPublisher to check for Hibernate
settings.
11 years ago
Dave Syer 38af1c2eb3 Remove @EnableAutoConfiguration from autoconfigure tests
It was doing scary things (like starting elasticsearch, hornetq etc).
There's still an outstanding question about why the context was
not being properly closed in such a scenario (maybe one of those
embedded servers lurking on a background thread?).

See gh-1034
11 years ago
Dave Syer 09200361de Align expectations of various JMX configurations
They all want to create an MBeanServer and when that happens
user sees no MBeans, or sometimes just one set (Spring Core,
Spring Integration or Spring Boot). To harmonise them we
create a @Bean of type MBeanServer and link to it in the
other autoconfigs

Fixes gh-1046
11 years ago
Oliver Gierke 6f98c63ac0 Add auto-configuration for Jackson's JodaTime and JSR-310 modules
We now register the Jackson JodaTime module with Jackson ObjectMappers
if it is on the classpath. We also register the JSR-310 module if it's
on the classpath and the application is running Java 8 or better.

Extracted the Jackson specific configuration previously residing in
HttpMessageConvertersAutoConfiguration into a JacksonAutoConfiguration
class.

Added the Jackson JSR-310 module as a managed Boot dependency.
11 years ago
Oliver Gierke 30bef1e95e Add @ConditionalOnJava
Added a new @ConditionalOnJava annotation that allows to conditionally
enable configuration based on the Java version that is running. 

The annotation currently supports two modes of restricting Java versions:
the default mode checks for a Java version equal or better than the
requested one. Beyond that it can be configured to only match if Java
version is older than the configured one.
11 years ago
Dave Syer dff7a3bf7c Remove dead code in ServerProperties 11 years ago
Dave Syer 53cbe74d83 Disable HornetQ by default for testing 11 years ago
Dave Syer 37121e69e6 Make DataSourceInitialization a no-op if there is no DataSource
Fixes gh-1041
11 years ago
Dave Syer 32dff415c3 Rationalize the Reactor autoconfig
It didn't make sense not to do anything at all if a Reactor @Bean
was detected, so now we only back off creating the rootReactor if
one is present.
11 years ago
Stephane Nicoll 36e0d44eb2 Attempt to fix test failures on CI
This commit is an attempt to fix the build failures with the HornetQ
tests and relates to #1034
11 years ago
Stephane Nicoll 49697c7ad7 polishing 11 years ago
Dave Syer 0ccfba939e Switch to a matches-none filter for security.basic.enabled=false
There were some residual issues to do with the changes to the implementation
of security.basic.enabled=false. It was a good idea to have a filetr chain
triggered by the flag being off because it smooths the way for user-defined
filter chains to use the Boot AuthenticationManager (as a first step at least),
but it wasn't a goog idea to add any actual secuity features to that filter.
E.g. if it has HSTS then even an app like Sagan that has some secure endpoints
that it manages itself and the rest is unsecured has issues because it can't
accept connections over HTTP even on unsecure endpoints.

TODO: find a way for security.ssl_enabled=true to apply to only the user-
defined security filter (maybe not possible or worth the effort, since they
can inject a SecurityProperties if they need it?).

See gh-928
11 years ago
Stephane Nicoll 726991c144 Use an embed HornetQ broker by default
This commit changes the default behavior of the HornetQ auto
configuration. Prior to this commit, an embedded broker was only
started when it was requested explicitly by a configuration option.

This is inconsistent with the ActiveMQ support and boot favors the
easiest route. If the necessary classes are available, HornetQ is
embedded in the application by default.

Fixes gh-1029
11 years ago
Oliver Gierke d6718025e6 Make HypermediaAutoConfiguration more lenient.
HypermediaAutoConfiguration didn't consider an @EnableHypermediaSupport 
annotation being present in the user configuration which could've caused 
it to be evaluated twice.

This is especially the case if both the auto-configuration for Spring 
HATEOAS and Spring Data REST kick in as Spring Data REST actively declares
@EnableHypermediaSupport. The double evaluation then causes injection
ambiguities as we now get multiple beans of e.g. LinkDiscoverers deployed.
11 years ago
Dave Syer 74166e770a Revert deferred DDL changes and re-oreder database migrations
Schema initialization now happens in @PostConstruct (effectively)
whether it is via the Hibernate EntityManagerFactory or the
Boot DataSourceInitialization (in addition or instead). The data.sql
script if it exists is still executed on an event fired from the
other places, so those tests are passing.

Flyway and liquibase have bean factory post processors (like
the one they use to order the audit aspect in Spring Data) that
enforce a dependency on those components from the EntityManagerFactory.
So Hibernate validation is still happy (and there are 2 tests to
prove it now as well).

Fixes gh-1022
11 years ago
Andy Wilkinson f7d1aab9f3 Make ElasticSearchAutoConfiguration conditional on SD Elasticsearch
ElasticSearchAutoConfiguration depends on two Spring Data Elasticsearch
classes (TransportClientFactoryBean and NodeClientFactoryBean), however
it’s only conditional on Elasticsearch itself being on the classpath.
This lead to start up failures due to a ClassNotFoundException. Its
@ConditionalOnClass configuration has been updated so that the
auto-configuration will only be enabled if both Elasticsearch and Spring
Data Elasticsearch are on the classpath.

The dependencies on TransportClientFactoryBean and NodeClientFactoryBean
were ‘hidden’ in ElasticsearchProperties. The logic that uses these
types has been moved into ElasticSearchAutoConfiguration so that the
usage of the types and the related @ConditionalOnClass configuration
is in the same file.

Fixes #1023
11 years ago
Dave Syer 0def7644c2 Check for existence of ResourceBundle before creating MessageSource
Irritatingly a ResourceBundleMessageSource never gives up trying to
create a resource bundle for every message resolution, so to stop
it logging all those warnings (and probably sucking performance-wise)
we need to disable the MessageSource if a bundle is not provided.

Fixes gh-1019
11 years ago
Dave Syer 740c132c23 pool -> pool2 11 years ago
Dave Syer 251dbddc6e Use null instead of 'none' for ddlAuto
Fixes gh-1012
11 years ago
Dave Syer 56e70ca585 Introduce subpackages for Spring Data autoconfig
(If we ever want to modularize this will make it less painful)

Fixes gh-1015
11 years ago
Dave Syer bc5a4bcc1e Compiler warnings 11 years ago
Dave Syer 77eaa9b24e Defensive on startup with Multipart config 11 years ago
Dave Syer 1f82ef4deb Ensure JPA/Security are not fighting with each other on startup
This is *really* nasty (and led me to discover a related bug
https://jira.spring.io/browse/SPR-11844), but fortunately easy to
hide from users once you have a test case.

The problem is that Spring Security registers a `BeanPostProcessor`
to handle `GlobalAuthenticationConfigurerAdapters`, and Boot
registers a `BeanPostProcessor` to handle injecting the packages
to scan into an `EntityManagerFactory` from `@EntityScan`. The
clash comes because the `EntityScanBeanPostProcessor` wants to be
postprocessed by the Security postprocessor, but if the Security
configuration depends on JPA it won't be ready in time.

The fix (or workaround) depending on how you look at it is to
prevent the other bean post processors from taking an interest in
`EntityScanBeanPostProcessor` at all (mark it as synthetic).

Fixes gh-1008
11 years ago
Dave Syer 49a09c807c Defer SQL initialization to fit with JPA better
Added 2 new spring.datasource.* properties ("data" like
"schema", and "deferDdl" like the "spring.jpa.hibernate.*"
flag). The SQL scripts are then run separately and the "data"
ones are triggered by a new DataSourceInitializedEvent,
which is also published by the Hibernate DDL schema export.

Fixes gh-1006
11 years ago
Dave Syer efcbb32788 Remove some compiler warnings 11 years ago
Phillip Webb 738d195587 Create JMS sub-packages
Reorganize the `jms` package into `hornetq` and `activemq` sub-pacakges.

Fixes gh-1005
11 years ago
Phillip Webb e5cda040b0 Restore test classes
Restore test classes accidentally deleted and ignored in c43fd04f3e.
11 years ago
Phillip Webb c43fd04f3e Add Elasticsearch tests
Add unit tests for elasticsearch packages. Also refactor some
of the existing tests to prevent Repository clashes.

See gh-408
11 years ago
Artur Konczak 99940337a9 Add support for Elasticsearch
Add auto-configuration and starters for Elasticsearch.

Fixes gh-408
11 years ago
Stephane Nicoll 5a69bb9267 Add HornetQ JMS support
Provide auto-configuration support for HornetQ JMS broker, along with
an additional starter POM.

The connection factory connects to a broker available on the local
machine by default. A configuration switch allows to enable an embedded
mode that starts HornetQ as part of the application.

In such a mode, the spring.hornetq.embedded.* properties provide
additional options to configure the embedded broker. In particular,
message persistence and data directory locations can be specified. It is
also possible to define the queue(s) and topic(s) to create on startup.

Fixes: gh-765
11 years ago
Phillip Webb 67beba9464 Switch HSTS enum to upper case.
Since the RelaxedBinder now supports it.
11 years ago
Dave Syer ef7390d3f0 Add extra @Conditional to be defensive in Social autoconfig
Older versions of Spring Social will not have the SocialConfigurerAdapter
so making social autoconfig conditional on that class makes sense (since it
all extends from it).

Fixes gh-986
11 years ago
Dave Syer 29cb21c322 Be lenient with prefix and add period if missing 11 years ago
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
Phillip Webb 7fd26a556d Fix social property binding
Update Spring Social auto-configurations to read properties using
the `dashed` notation and with the appropriate prefixes. This allows
properties to be specified in any of the relaxed forms.

Also minor refactor to extract common logic to a new
SocialAutoConfigurerAdapter base class.

See gh-941
11 years ago
Andy Wilkinson 47e3a72390 Source code formatting 11 years ago
Craig Walls 5e1913576e Document Spring Social support 11 years ago
Craig Walls f006b1231c Add Spring Social autoconfiguration 11 years ago
Phillip Webb 6381fdcb49 Polish 11 years ago
Dave Syer 43481725b9 Fix bug in DataSourceBuilder 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
Phillip Webb 28f88562f2 Make AutoConfigurationPackages.set public
Open up AutoConfigurationPackages.set(...) to allow programmatic
configuration of base packages.

Fixes gh-924
11 years ago
Phillip Webb a6b94e7cef Fix typo in warning 11 years ago
Andy Wilkinson f21151e594 Dont’t auto-configure FreeMarker and Velocity without context-support
Boot’s auto-configuration for FreeMarker and Velocity relies on Spring’s
support for them that’s packaged in spring-context-support. Only
auto-configure them if their respective Spring classes are on the
classpath

Fixes #940
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
Phillip Webb 0897cfb51b Deprecate and warn on namingstrategy
Deprecate setNamingstrategy() and log a warning letting people know
that they should use `naming-strategy`.

Issue #928
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 146a337b53 Ensure Mongo autoconfig is easy to exclude 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
Dave Syer 86ff5315b4 Update to Jedis 2.4.1 means commons-pool2
Fixes gh-918
11 years ago
Andy Wilkinson 00b18b114a Merge branch '1.0.x' 11 years ago
Phillip Webb 8bcda1bcbe Polish 11 years ago
Dave Syer 233a2e8fb5 Fix ordering problem with Mongo autoconfig 11 years ago
Andy Wilkinson eeefbdd5f8 Polish dependency management
- Remove dependency management for projects that Boot does not have a
  runtime dependency upon
- Provide dependency management for all of Spring Batch’s modules
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 7787b2ef6a Make Groovy templates work with Groovy 2.2
Fixes gh-890
11 years ago
Dave Syer e964b9eb34 Improved integration with Groovy 2.3.1
Groovy 2.3.1 has a new template loader abstraction that handles
compiler caching (better performance by factor of 10).
11 years ago
Dave Syer 85ac8f6b05 Add config hint to template error messages 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 2cc5bdfa09 Hack to force Flyway to initialize early 11 years ago
Dave Syer 53ff50adb6 Map oracle->oracle10g for Batch schema initialization
Fixes gh-892
11 years ago
Dave Syer 586b52faf5 Fix Groovy template URLs 11 years ago
Dave Syer c8ca2495de Use URLs for groovy template resources 11 years ago