Commit Graph

435 Commits

Author SHA1 Message Date
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.
2014-05-22 17:29:12 +01:00
Dave Syer 146a337b53 Ensure Mongo autoconfig is easy to exclude 2014-05-21 12:53:35 +01:00
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
2014-05-21 12:47:53 +01:00
Dave Syer 86ff5315b4 Update to Jedis 2.4.1 means commons-pool2
Fixes gh-918
2014-05-21 11:30:43 +01:00
Andy Wilkinson 00b18b114a Merge branch '1.0.x' 2014-05-21 09:14:07 +01:00
Phillip Webb 8bcda1bcbe Polish 2014-05-20 18:26:56 +01:00
Dave Syer 233a2e8fb5 Fix ordering problem with Mongo autoconfig 2014-05-20 17:17:21 +01:00
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
2014-05-20 13:48:47 +01:00
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
2014-05-20 11:28:56 +01:00
Dave Syer 7787b2ef6a Make Groovy templates work with Groovy 2.2
Fixes gh-890
2014-05-19 18:23:47 +01:00
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).
2014-05-19 18:23:03 +01:00
Dave Syer 85ac8f6b05 Add config hint to template error messages 2014-05-19 18:22:25 +01:00
Dave Syer 93a33f0197 Fix test 2014-05-19 12:27:24 +01:00
Andy Wilkinson 2378fe0900 Add support for using Velocity templates 2014-05-19 12:01:20 +01:00
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
2014-05-19 11:52:27 +01:00
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
2014-05-19 11:08:11 +01:00
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
2014-05-19 11:08:11 +01:00
Dave Syer 2cc5bdfa09 Hack to force Flyway to initialize early 2014-05-19 11:08:11 +01:00
Dave Syer 53ff50adb6 Map oracle->oracle10g for Batch schema initialization
Fixes gh-892
2014-05-17 06:51:38 +01:00
Dave Syer 586b52faf5 Fix Groovy template URLs 2014-05-16 13:47:28 +01:00
Dave Syer c8ca2495de Use URLs for groovy template resources 2014-05-16 13:04:00 +01:00
Dave Syer 7c7d1f55e0 Add RequestContext to Groovy template view model 2014-05-16 09:41:50 +01:00
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.
2014-05-15 22:12:27 +01:00
Dave Syer 15303a2de6 Add GroovyTemplates to autconfig 2014-05-15 18:42:44 +01:00
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
2014-05-15 17:42:53 +01:00
Phillip Webb 938609fdc0 Merge branch '1.0.x'
Conflicts:
	spring-boot-actuator/src/main/java/org/springframework/boot/actuate/autoconfigure/CrshAutoConfiguration.java
	spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jdbc/DataSourceAutoConfiguration.java
2014-05-15 16:35:43 +01:00
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
2014-05-15 16:32:30 +01:00
Phillip Webb fa7da5925b Remove checked exceptions from @PostConstructs
Update all @PostConstruct methods to ensure that they don't throw
checked exceptions. Required to allow deployment of Spring Boot
applications on Glassfish.

Fixes gh-868
2014-05-15 15:47:44 +01:00
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
2014-05-15 16:18:41 +02:00
Dave Syer 0a11459c3e path->templateLoaderPath 2014-05-15 15:03:51 +01:00
Phillip Webb aaf50a768c spring.freemarker.templateLoaderPath -> path
Fixup tests and documentation following the rename of
spring.freemarker.templateLoaderPath to spring.freemarker.path
2014-05-15 14:54:14 +01:00
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)
2014-05-15 13:10:53 +01:00
Dave Syer 6a10df0933 Fix freeMarker->freemarker 2014-05-15 12:39:37 +01:00
Dave Syer aca0d38f08 Make OnExpressionCondition package private
(consistent with the other Condition implementations)
2014-05-15 10:16:46 +01:00
Phillip Webb 01fcf61140 Polish 2014-05-15 09:51:16 +01:00
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).
2014-05-15 09:18:38 +01:00
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.
2014-05-13 16:46:04 +01:00
Dave Syer 1b284a0619 Add RelaxedDataSourceFactory 2014-05-13 16:45:48 +01:00
Christian Dupuis 9e56c38b7a Rename DefaulErrorAttributes to DefaultErrorAttributes
fixes #853
2014-05-13 17:43:28 +02:00
Christian Dupuis d8ec2719d7 Fix RedisAutoConfiguration with pool config
fixes #850
2014-05-13 17:32:53 +02:00
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
2014-05-12 19:46:57 +01:00
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
2014-05-12 09:02:28 +01:00
Lukasz Kryger 254b175c0a Read data-{platform}.sql in addition to data.sql
Update DataSourceAutoConfiguration to read platform specific `data.sql`
files in the same way as `schema.sql` files.

Fixes gh-837
2014-05-10 22:49:49 +01:00
Phillip Webb dac03fdb7b Extract WebMvcProperties
Extract WebMvcProperties from WebMvcAutoConfiguration and also
update conditionals to use @ConditionalOnProperty.
2014-05-10 00:25:49 +01:00
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
2014-05-10 00:23:13 +01:00
Phillip Webb 4b51b6f9df Support relaxed names with ConditionalOnProperty
Update ConditionalOnProperty to optionally support relaxed form names.

Fixes gh-835
2014-05-10 00:23:05 +01:00
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
2014-05-08 16:17:38 +01:00
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
2014-05-08 15:12:45 +01:00
Dave Syer 14d3b46809 Add constants to SecurityProperties and ManagementServerProperties
For the convenience of users who want to selectively override the
access rules in an application without taking complete control of the
security configuration we now have some constants:

* SecurityProperties.ACCESS_OVERRIDE_ORDER for overriding just the
application endpoint access rules

* ManagementServerProperties.ACCESS_OVERRIDE_ORDER for overriding the
application endpoint and management endpoint access rules

Fixes gh-803
2014-05-08 05:32:43 -07:00
Dave Syer f04f265515 Remove some compiler warnings 2014-05-08 05:32:43 -07:00