This Week in Spring - June 3rd, 2014

Engineering | Josh Long | June 03, 2014 | ...

Welcome to another installment of This Week in Spring. This week's an exciting week! Well, let's be honest. They're all exciting weeks. But in particular, this week's going to make a lot of people happy. Watch the blog and I'll see you back here next week to recap! :)

  1. Oh my goodness! Spring Boot 1.1.0.RC1 is now available! The new release maintains the epic with support for Spring Data Elasticsearch, HornetQ, and Spring Social, and a lot more! Grab the latest release, kick the tires, and feedback on Twitter or GitHub.
  2. Dr. Mark Pollack has just announced that the latest release of Spring XD, 1.0.0.M7 is now available. The new release provides a lot of great new features. My favorite is the ability to pin data to a certain stream - think of this as correllation using a message's content - so that you can preserve stateful operations. Think of this as a great way to route and divide messages based on a useful business key. There's a great example in the release notes.
  3. Azul rockstar Gil Tene gave an amazing talk on reducing latency for SpringOne2gX 2013 that is now available online. Gil is one of our industry's mad scientists. I haven't yet seen this talk, but I will, and I highly recommend that you do too. Azul makes high performance, low latency JVMs both as appliances and as deliverable software. His talks thus stem from a lot of thankless research and development that I'd just as soon spare myself by watching, and learning from, his talks. Go, Gil!
  4. June webinars are here! Michael Minella in Spring Batch 3.0.0 on June 10th, and Glenn Renfro in Spring Integration Done Boot-ifully on June 17th.
  5. Spring ninja Greg Turnquist has put together a teaser post on using the amazing when.js Promises/A+ implementation in a front-end REST client in advance of his SpringOne2GX 2014 talk. Check out the post and his talk at the conference!
  6. Ramnivas Laddad, a Spring ninja, original AspectJ leaders, and architects behind Cloud Foundry, has just posted a very cool look at Spring Cloud, which makes consuming client services from different middle/infrastructure services (a database, a message queue) on various Platforms-as-a-Service (PaaSes) a simple matter of platform-decoupling configuration.
  7. The replay of ADP's Jeffery Sologov's talk looking at the pitfalls of building large scale applications is now up! Check it out!
  8. ttp://twitter.com/JakubJirutka chimed in to tell us about this epic Spring Expression Language (SpEL)-powered implementation of the Bean Validation API (JSR 303/349). The GitHub offers an interesting point, "it’s especially very useful for cross-field validations that are very complicated with a plain Bean Validation." I love the examples, too:
     
    @SpELAssert(value = "password.equals(passwordVerify)",
            applyIf = "password || passwordVerify",
            message = "{validator.passwords_not_same}")
    public class User {
      private String password;
      private String passwordVerify;
    }
    

    Nice job!

  9. A hat tip to the amazing Brian Dussault for finding this: Zuul is a nifty looking application configuration management solution that offers a clean Spring client API.

  10. You know what made my day yesterday? A HystrixInvocationHandler. An InvocationHandler is used by the JDK (and Spring's rich proxying subsystem) to create proxies that wrap beans. This InvocationHandler wraps method invocations on a given bean in Netflix's OSS Hystrix project's Command objects. Hystrix Commands wrap functionality and provide/support resiliency patterns. I can't wait to see more of what becomes of Spencer Gibb's Halfpipe project!
  11. Our pal David Welch is at it again, this time with an interesting project called Spring Tiered, which aims to simplify even further (and normalize) the development of HATEOAS based services. Interesting...
  12. Also, speaking of building (and consuming) resilient services, check out Chris Richardson's fantastic talk from SpringOne2GX 2013 on powerful abstractions for consuming services asynchronously.
  13. Also, I put together a post talking about getting started with Maven (and alternatives) and Spring

Spring Boot 1.1.0.RC1 Available Now

Releases | Dave Syer | June 02, 2014 | ...

Spring Boot 1.1.0.RC1 is available now in the Spring repositories. There are some new features and some new documentation:

  • Autoconfiguration support for Spring Data Elastic Search, HornetQ messaging, Spring Social

  • Support for @IntegrationTest in the Groovy CLI

  • Upgrades to Tomcat, Spring Integration, Reactor and Groovy

We are on schedule for a GA release some time in the next 2 weeks, so please try out the RC1 and get feedback onto github as soon as you have time.

Using new when.js 3.2.2 to build a front end for Spring Data REST

Engineering | Greg L. Turnquist | June 02, 2014 | ...

Greetings Spring community!

Roy Clarkson and I are presenting a talk at this year's SpringOne 2014 conference called Spring Data REST - Data Meets Hypermedia. We will explore how to quickly bridge the gap between a powerful Spring Data backend and a hypermedia enabled, RESTful front end.

In one part of the talk, we will delve into a javascript front end that lets the user takes pictures and upload them to a website. The website turns around and fetches images from the back end. By itself, this isn't that difficult thanks to the fully loaded RESTful API provided by Spring Data REST.

But fetching multiple images straight up isn't very efficient and is prone to freeze the web browser. Thanks to the CujoJS guys on our team (Brian Cavalier and John Hann), I was able to use the recently released when.js module

Spring Tool Suite and Groovy/Grails Tool Suite 3.6.0.M1 released

Releases | Martin Lippert | May 30, 2014 | ...

Dear Spring Community,

I am happy to announce the first milestone release 3.6.0.M1 of the Spring Tool Suite (STS) and the Groovy/Grails Tool Suite (GGTS).

Highlights from this milestone build include:

  • based on Eclipse Luna 4.4
  • support for Groovy 2.3
  • updated to Grails 2.4
  • updated to tc Server 2.9.6
  • minor improvements to the Gradle tooling
  • bugfixes, including fixes for endless build loops and memory leaks

To download the distributions, please go visit:

Detailed new and noteworthy notes can be found here: STS/GGTS 3.6.0.M1 New & Noteworthy.

NOTE: Both tool suites ship on top of the latest Eclipse Luna 4.4 release candidates as 64bit based zip files ONLY. We plan to no longer ship installers and 32bit distributions anymore. Update sites will be available for use with older Eclipse versions and 32bit installations.

We are very keen to hear any feedback on this change.

The 3.6.…

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!

This Week in Spring - May 27th, 2014

Engineering | Josh Long | May 28, 2014 | ...

Welcome to another installment of This Week in Spring! Here in the States we had a 3-day weekend, which was nice. Good chance to watch some of those amazing tech talks! If you're like me, you've run out of tech talks, and will be glad to see that we have a lot more going up today!

  1. Grails project lead Graeme Rocher just announced Grails 2.4! The new release is amazing for a slew of reasons, not the least of which is that some of its many amazing features are easy to use with Spring Boot, too. Double win! Congratulations, Graeme and team. (And also thank you, for another amazing release!)
  2. Spring Boot 1.1.0.M2 is now available! The new release features improved support for Spring Data Solr, Spring Data Gemfire, and the entire Spring Data Dijkstra release train. The new release also offers GSP (Groovy Server Pages) and Velocity as templating options, along with upgrades to various libraries like Spring Security 3.2.4, and Spring Batch 3.0. This release train is moving quickly, so jump onboard while you can! There's a lot more great stuff, so check out the release notes.
  3. June webinars are here! Ramnivas Laddad on launches Spring Cloud on June 3rd in Abstracting PaaS services to be portable with Spring Cloud, Michael Minella in Spring Batch 3.0.0 on June 10th, and Glenn Renfro in Spring Integration Done Boot-ifully on June 17th.
  4. This blog introduces some of the limitations of Hibernate's inbuilt JDBC logging and then introduces log4jdbc as used in a simple Spring / Hibernate application.
  5. Our pal Eugen Paraschiv has put together a very nice introduction to Spring Data JPA.
  6. Matti Tahvonen over on the Vaadin team put together this fantastic introduction to using Spring Data Neo4j, Spring Boot, and of course the Vaadin4Spring library that Petter Holmström and I started. To be fair, it's only usable because of Petter :) So usable, in fact, that Matti was able to put together something beautiful - Bootiful - very quickly. Check it out! The application models (and visualizes!) data stored in Neo4j, so it's not just any old CRUD application, this is very cool!
  7. CloudFoundry ninja James Bayer announced the new Pivotal CF 1.2, which now supports VMWare's Hybrid Cloud Service, initial auditing and autoscaling, new data services (Redis, MongoDB, Neo4j, RiakCS, and ElasticSearch are all available!), and a lot more!
  8. Curiousity piqued? Want to learn more about CloudFoundry, the open-source Paas from Pivotal? Check out this epic video on how to setup your own Paas using BOSH from SpringOne2GX 2013. And hear about how other teams acutally did it in the SprignOne2GX replay - Free Yourself with CloudFoundry: A Private Cloud Experience.
  9. Data ninja Thomas Risberg just announced the new Spring for Apache Hadoop RC4 release, which is awesome! The new release improves upon the Spring YARN integration. YARN, of course, is the distributed, generic runtime on top of which Hadoop 2.0's very specific map/reduce support now sits. You can use YARN for job distribution of your own, however. You might, for example, use YARN to split up Spring Batch workloads. In the new example, Janne Valkealahti demonstrates a simple Spring Boot-powered Spring YARN component. It's amazing how concise this stuff is now!
  10. Want to learn more about Janne Valkealahti, the mad (data) scientist behind our Spring YARN support? Check out this Pivotal People profile!
  11. Spring Data lead Oliver Gierke does a nice job introducing the new hotness in Spring Data Dijkstra, the new Spring Data umbrella release. This release includes Java 8 Optional support, asynchronous repository method invocations, and more.
  12. Spring Security lead Rob Winch has just two small, bugfixe releases: Spring LDAP 2.0.2, and Spring Security 3.2.4
  13. Spring Web Services lead Arjen Poutsma has just announced Spring Web Services 2.2.0, which now features a Java configuration API and much more.
  14. Let me take a moment to remind everyone: Java configuration is everywhere! Spring framework, Boot, Data, Security, MVC, Integration, Batch, Social, and much more, all offer as-rich-as-the-XML Java configuration integrations. In the case of Boot, Java configuration is the only out-of-the-box option, though of course you can use XML if you'd like. It's just.. not expected.
  15. Spring Security lead also blogged about using Spring Security Test to handle web security
  16. Want to write your own Spring Boot starter? Check out this example from Spring ninja Stephane Nicoll on how to provide a HornetQ starter for Spring Boot
  17. At long last, Spring Social Google 1.0.0.GA has been released! Congratulations, Gabriel, on all the work required to arrive here. I like the easy-to-use example, too.
  18. Arnaud Giuliani has put together a very cool look at using GWT with Spring Boot. Nicely done, Arnaud!
  19. Netflix engineer Tomas Lin tweeted a link to a convenient Spring MVC exception handler for REST APIs. This is one (fine) way to approach the problem. As an alternative, I'd suggest you take a look at [using Spring HATEOAS' VndError(s) support]a).

Using the innovative Groovy template engine in Spring Boot

Engineering | Cédric Champeau | May 28, 2014 | ...

With the release of Spring Boot 1.1.0.M2 came the support for the new template engine that Groovy 2.3 provides. In this post, we will describe the benefits of using such an engine and of course how you can use it in Boot.

All the source code in this post is available on GitHub, so feel free to clone the repository and give it a try:

git clone https://github.com/melix/springboot-groovytemplates.git
cd springboot-groovytemplates
./gradlew run

Then open your browser on http://localhost:8080

This application is fully written in Groovy and also makes use of GORM for Boot, but it is of course…

Webinar Replay: Data-Driven Applications with Spring and Neo4j

News | Pieter Humphrey | May 28, 2014 | ...

Speakers: Michael Hunger, Josh Long

Slides: https://speakerdeck.com/jexp/spring-data-neo4j-and-spring-boot

Spring Data Neo4j 3.0 is here and it supports Neo4j 2.0. Neo4j is a tiny graph database with a big punch. Graph databases are imminently suited to asking interesting questions, and doing analysis. Want to load the Facebook friend graph? Build a recommendation engine? Neo4j's just the ticket. Join Spring Data Neo4j lead Michael Hunger (@mesirii) and Spring Developer Advocate Josh Long (@starbuxman) for a look at how to build smart, graph-driven applications with Spring Data Neo4j and Spring Boot.

Note: there are some minor audio issues in the source recording that could not be edited out.

Learn more about Spring Data Neo4j at http://projects.spring.io/spring-data-neo4j/

!{iframe width="420" height="315" src="//www.youtube.com/embed/ZfbJ1ZJdb_A" frameborder="0" allowfullscreen}{/iframe}

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…

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