Spring Batch 3.0.0 is now GA

Releases | Michael Minella | May 29, 2014 | ...

Today we are pleased to announce the release of Spring Batch 3.0. This release of Spring Batch provides support for JSR-352 - we are committed to providing that support, as well as a number of new features for our existing Spring Batch community.

Features in Spring Batch 3.0

The major features for this release include:

  • JSR-352 support
  • Promotion of Spring Batch Integration into Spring Batch
  • Complete overhaul of dependencies
  • Support for SQLite
  • Job scope
  • Removal of "archetypes" in favor of Spring Boot
  • Switch from Maven to Gradle for building Spring Batch

JSR-352 Support

Providing one of the most important new features in JEE7, JSR-352 brings standardization of batch processing to the java stack. The Spring team not only provided extensive input into the spec with two team members on the expert group, but Spring Batch served as the inspiration for most of the programming model. Spring Batch 3.0 continues the Spring commitment to JSR-352 by providing the most production tested code base to implement this specification.

It's important to note the differences between JSR-352 and Spring Batch. JSR-352 provides three things:

  • An API for building batch components
  • An XML based DSL for configuring batch components
  • A contract of how batch components interact

JSR-352 does not provide any implementations of batch components. Spring Batch provides 17 readers, 16 writers and countless other utilities and extensions that have been tested for years in enterprise production environments. Spring Batch provides scalability options beyond a single JVM. Finally Spring Batch provides big data support both through the Spring for Apache Hadoop project and as a cornerstone of Spring XD.

To read more about Spring Batch's implementation of JSR-352, visit our reference documentation here: http://docs.spring.io/spring-batch/trunk/reference/html/jsr-352.html

Promote Spring Batch Integration to Spring Batch

From the outside looking in, it can be confusing to determine when to use Spring Batch and when to use Spring Integration. To be truthful, there isn't always a solid either/or answer. In many cases, the combination of the two technologies is the best option to provide robust, scalable solutions. This is why Spring Batch Integration was developed. A collection of Spring Batch extensions, this module allows developers to use Spring Integration to extend the power of Spring Batch. Functionality like multi-JVM scalability and message driven job launching are provided with no custom code and minimal configuration with this module.

The functionality provided in Spring Batch Integration extend batch processing beyond what JSR-352 provides capabilities to provide robust, enterprise grade solutions. You can read more about Spring Batch Integration and it's components in the reference documentation here: http://docs.spring.io/spring-batch/trunk/reference/html/springBatchIntegration.html.

Complete overhaul of dependencies

As part of an ongoing effort across the Spring portfolio, the Spring Batch third party dependencies have been updated. This allows users of Spring Batch to use the latest and greatest of the libraries they trust with Spring Batch.

Support for SQLite

Most integration test scenarios use HSQLDB as a datasource due to its ability to easily create in-memory databases. However, there are times when a simple, single file, option would be nicer. For that reason, we have added SQLite as a supported database for the Spring Batch repository.

Job scope

Spring Batch provides two custom bean scopes. The first, step scope, has been around for years as a way to delay bean initialization until the step the bean is used by is executed. With Spring Batch 3.0, we've added a job scope. This will allow the ability to lazily initialize job level components (JobExecutionListeners for example) as well as provide functionality like job parameter injection to those components. You can read more about the job scope in the reference manual here: http://docs.spring.io/spring-batch/trunk/reference/html/configureStep.html#job-scope.

Removal of "archetypes" in favor of Spring Boot

Spring Batch has traditionally provided a sample maven project as a way to bootstrap a Spring Batch project. With Spring Boot, we've removed those projects in favor of using the dynamic bootstrapping capabilities that Spring Boot provides. We believe that Boot provides a far superior option to what the old "archetypes" provided.

Move from Maven to Gradle

Finally, this release is the first for Spring Batch to move from Maven to Gradle for an internal build system. This change will have zero effect on developers consuming the jars. They will still be available via Maven Central for maven users.

Looking forward

With this release, we look forward to planning and developing our 3.1 release. The 3.1 release will have two major themes: simplification and supporting the Spring XD efforts.

For the simplification side, we want to improve the usability of Spring Batch to a point where it can be considered for less "heavy" processes. By focusing here, it allows developers to "grow" a solution. Many times things that start out as simple scripts and evolve into processes enterprises need to lean on for mission critical functionality. We want Spring Batch to be a consideration at the script stage so that when that functionality needs an enterprise grade solution, it's already there.

Beyond core Spring Batch functionality, Spring Batch serves as a core technology for Spring XD. We will continue to expand Spring Batch's capabilities to support big data solutions through Spring XD and Spring for Apache Hadoop.

Conclusion

3.0.0 represents the completion of the next major milestone for Spring Batch. It brings the standards that JSR-352 provides to our community as well as providing an exhaustive collection of additional features for the advanced user. We look forward to your feedback in the forums, social media, and in person at SpringOne2GX!

Spring for Apache Hadoop 2.0 RC4 released

Releases | Thomas Risberg | May 27, 2014 | ...

We are happy to announce that Spring for Apache Hadoop version 2.0 RC4 is now available.


Now includes simplified support for building YARN applications


We are getting close to a GA release of Spring for Apache Hadoop 2.0. Based on feedback from using the Spring Boot support for YARN in the Spring XD project, we have refined the programming model we use for developing YARN applications.

The challenge

We keep challenging Janne to make the model simpler. The latest challenge was to make it possible to write a single Java source file plus one configuration file and keep it under 50 lines. I…

Spring Web Services 2.2.0 Released

Releases | Arjen Poutsma | May 22, 2014 | ...

I'm pleased to announce that Spring Web Services 2.2.0.RELEASE has been released! This is the first release in the 2.2 release cycle. The main new feature in 2.2 is the introduction of code configuration support for Spring-WS. This means that you can now configure Spring-WS with a simple @EnableWs annotation. For instance:

@Configuration
@EnableWs
@ComponentScan(basePackageClasses = { MyConfiguration.class })
public class MyWsConfiguration {

  // @Beans go here
}

For more information about this topic, refer to the javadoc of @EnableWs. You can also read more about this new feature in the updated reference documentation. To view a complete list of changes see the changelog

Grails 2.4 Released

Releases | Graeme Rocher | May 21, 2014 | ...

Today we are pleased to announce the release of Grails 2.4. This is the final release in the 2.x line of releases and includes a number of significant updates.

Most importantly Grails 2.4.x ships with key pieces of the Spring IO platform, including Groovy 2.3 and Spring 4.0.5.

Release Highlights

In addition to the inclusion of the latest versions of Spring and Groovy there are a number of key new features in this release, including:

  • Standalone GORM & GSP - Yes, GORM for Hibernate 4 and GORM for MongoDB can both be used outside of Grails in a Spring Boot application or Groovy script.
  • Static Compilation - Using extensions to Groovy's static compilation features, it is now possible to statically compile many interactions with the Grails framework, including dynamic finders.
  • Asset Pipeline Plugin - Grails 2.4 replaces the previous Resources plugin with the new Asset Pipeline plugin for managing static assets (CSS, JavaScript etc.).
  • GORM Subqueries - GORM has been enhanced, with extensive support for correlated subqueries.
  • New Maven Plugin - The Maven plugin

Spring Framework 4.0.5 & 3.2.9 released - next stop: 4.1

Releases | Juergen Hoeller | May 20, 2014 | ...

Dear Spring community,

It's my pleasure to announce that Spring Framework 4.0.5 and 3.2.9 have been released. Both of those are designed as a final feature release in the respective line - we will only consider further releases from the 4.0.x and 3.2.x branches in case of serious bugs now.

http://projects.spring.io/spring-framework/

Spring Framework 3.2.9 comes with a repackaged ASM 5.0.2 and is therefore capable of basic Java 8 bytecode processing. However, specific Java 8 feature support - JSR-310 date-time, repeatable annotations, etc - is exclusive to the Spring Framework 4.x line.

SPR…

Spring Data Release Train Dijkstra Goes GA

Releases | Oliver Drotbohm | May 20, 2014 | ...

Hot on the heels of the Spring 3.2.9 and 4.0.5 releases, I am pleased to announce the availability of the GA release of the Spring Data release train named Dijkstra.

We're happy to welcome 5 new modules to the release train: Elasticsearch, Cassandra, Couchbase, Gemfire and Redis. Two of them even celebrate their first GA version ever. So I'd like to send special congratulations and thanks to the project leads Mohsin Husen for Spring Data Elasticsearch and David Webb as well as Matthew Adams for Spring Data Cassandra.

Here's the full list of participating modules:

Spring Boot 1.1.0.M1 available now

Releases | Phil Webb | May 14, 2014 | ...

The first milestone release for Spring Boot 1.1.0 is available now in the Spring milestone repository.

Highlights include:

  • Additional templating support.
  • Improved metrics and health endpoints.
  • Additional data integrations (including improved MongoDB support and support for GemFire).
  • A host of minor improvements and additions.
  • Updated dependencies for many third-party libraries.

See the release notes for a complete list of new and noteworthy features.

We'd appreciate any feedback from existing Spring Boot 1.0 users. If you are upgrading, be sure to follow the instructions from the release notes

Spring Batch 3.0.0.RC1 is now available

Releases | Michael Minella | May 13, 2014 | ...

Today we are pleased to announce the release candidate for Spring Batch 3.0. This release of Spring Batch provides the support for JSR-352 we are committed to providing as well as a number of new features for our existing Spring Batch community.

Features in Release Candidate 1

The major features for this release include:

  • JSR-352 support
  • Promotion of Spring Batch Integration into Spring Batch
  • Complete overhaul of dependencies
  • Support for SQLite
  • Job scope
  • Switch from Maven to Gradle for building Spring Batch

JSR-352 Support

JSR-352 is the batch JSR and was released as 1.0 late last year. As Spring Batch served as the inspiration for much of the programming model of this JSR, Spring is committed to supporting it. With the 3.0 release, Spring Batch is compliant with JSR-352 passing all TCK tests. It provides the most production-tested implementation of the JSR.

Creating batch jobs that comply with the standards of this JSR should feel very familiar to users of Spring Batch. The XML configuration and interfaces are very similar to the existing Spring Batch. Below is an example JSR-352 batch job

```xml ```

Spring Batch's implementation of JSR-352 was developed to allow the most flexibility for existing Spring Batch users. We allow developers to use existing ItemReader, ItemProcessor, ItemWriters, etc in conjunction with the configuration facilities that JSR-352 provides. This provides developers a complete library of production-tested components for building robust batch jobs.

To read more about Spring Batch's implementation of JSR-352, visit our reference documentation here: http://docs.spring.io/spring-batch/trunk/reference/html/jsr-352.html

Promote Spring Batch Integration to Spring Batch

The line between when to use Spring Batch or Spring Integration is often a blurry one. There are many use cases where one works better than the other. However, there are also many use cases where they can be used together to build robust and scalable data processing systems. Spring Batch Integration provides a collection of components to use Spring Batch and Spring Integration together. Use cases that Spring Batch Integration provide for include:

  • Asynchronous item processing
  • Remote chunking
  • Launching batch jobs via messages
  • Remote partitioning

These capabilities take batch processing beyond what JSR-352 provides and allows users to develop batch applications that scale beyond a single JVM. You can read more about Spring Batch Integration and it's components in the reference documentation here: http://docs.spring.io/spring-batch/trunk/reference/html/springBatchIntegration.html.

Complete overhaul of dependencies

We took this opportunity to review all third party dependencies for Spring Batch and bring them up to date. As part of this exercise, we also brought them in alignment with the other projects in the Spring portfolio to allow for the easiest experience in adding Spring Batch to an existing application (or adding other projects to a Spring Batch project).

Support for SQLite

While HSQLDB is useful for many testing scenarios, a file based system like SQLite can also be very useful. With the 3.0 release we have added the job repository DDL for SQLite to address these use cases.

Job scope

Spring Batch's step scope allows developers to delay the creation of objects until a particular step is executed. This functionality has also exposed the ability to provide late binding of properties in batch artifacts. With this 3.0 release, Spring Batch introduces a Job scope. This scope works in the same way as the step scope (delays the creation of objects via proxies), however it delays the creation until the job executes instead of the step. This can be helpful when defining multiple jobs in a context or when heavy weight initialization processes occur in step level components. You can read more about the job scope in the reference manual here: http://docs.spring.io/spring-batch/trunk/reference/html/configureStep.html#job-scope.

Move from Maven to Gradle

Finally, this release is the first for Spring Batch to move from Maven to Gradle for an internal build system. This change will have zero effect on developers consuming the jars. They will still be available via Maven Central for maven users.

Conclusion

3.0.0.RC1 represents the completion of the next major milestone for Spring Batch. It brings the standards that JSR-352 provides to our community as well as providing an exhaustive collection of additional features for the advanced user. We look forward to your feedback in the forums, social media, and in person at SpringOne2GX!

Get the Spring newsletter

Stay connected with the Spring newsletter

Subscribe

Get ahead

VMware offers training and certification to turbo-charge your progress.

Learn more

Get support

Tanzu Spring offers support and binaries for OpenJDK™, Spring, and Apache Tomcat® in one simple subscription.

Learn more

Upcoming events

Check out all the upcoming events in the Spring community.

View all