Spring Integration 4.0 Released

Engineering | Gary Russell | April 30, 2014 | ...

We are pleased to announce the 4.0.0.RELEASE version of Spring Integration is now available.

The artifacts are available in the Spring repository (repo.spring.io/release) and Maven Central now.

The new features have been covered in some depth in the Milestone 4 and Release Candidate announcements (including Spring Boot examples) but, to summarize:

  • Requires Spring Framework 4.0.3 or above
  • Greatly expanded annotation support for configuring integration flows, laying the groundwork for the Java DSL which is in progress in the extensions repo
  • New endpoints, and more...

For changes since the release candidate, see the GA release notes

Spring 4.1's Upcoming JMS Improvements

Engineering | Stéphane Nicoll | April 30, 2014 | ...

Spring Framework 4.0 introduced a new spring-messaging module, adding a selection of Spring Integration types such as the core Message abstraction. Spring 4.1 aligns its JMS support to allow you to benefit from that abstraction. But before diving into that, I'd like to show you in details how we further improved the infrastructure for listener endpoints.

Annotation-driven listener endpoints

You are probably used to the <xyz:annotation-driven> element or the @Enable* counterpart and perhaps you were looking for something similar for JMS. Look no further: the next major release of the Spring…

This Week in Spring - April 29th, 2014

Engineering | Josh Long | April 29, 2014 | ...

Welcome to another installment of This Week in Spring! Last week I finished an absolutely lovely time in Bangalore, India, and yesterday I popped into Leuven, Belgium at the insanely poplar Devoxx conference founder Stephan Janssen's invitation for a quick visit to the Belgium Java User Group where I got to hang out with some absolutely amazingly enthusiastic locals and, of course, my pal and Spring framework committer Stéphane Nicoll. Naturally, the video of the whole thing should be up on Parleys at some point soon, too!

Let's dive right into it!

  1. Spring Social co-founder and lead Craig Walls has just announced the long awaited Spring Social 1.1.0 release! This new release is fantastic! If you've been following the pre-release cuts over the last year and a half, then you'll know there's been some deep rethinking on how to easily expose Spring Social's Java configuration. The final release is both concise and general purpose. I am super excited to see this and will begin updating my various Spring Social-powered OAuth clients accordingly! VERY nice job, Craig!
  2. Did you see the new "minor" Spring Boot release, 1.0.2? I use quotes because, with Spring Boot, even the minor releases pack a punch! Dr. Syer announced the release and pointed out - among other things - the fancy new @IntegrationTest annotation. Awesome! (now excuse me while I go update my Boot projects...)
  3. Join me and Ashley Puls from New Relic tomorrow April 30th as we track and trace our way through a Javascript (frontend) and Java/Spring (backend) application.
  4. Spring Integration is looking at an incredible new release -- full support for Annotations and Java Configuration + some Spring Boot support! With 4.0, you'll be able to make XML - free integration applications. Project lead Gary Russell taking you through all the new hotness in the webinar, Spring Integration 4.0, the new frontier, on May 13.
  5. Spring Data Neo4j lead Michael Hunger and I will be giving a webinar on the new awesome in Spring Data Neo4j 3.0 and Neo4j 2.0 on May 20th.
  6. Continuing the series on Project Sagan, Spring framework ninja Brian Clozel has just written up a very nice look at how Project Sagan does client-side JavaScript. This is a great look at what modern, client-side applications look like with npm, grunt, and gulp. Best part? The content is delivered as a video! Perfect!
  7. Spring Roo has a major contributor in DISID! Check out this great post from my pal Pieter Humphrey on the future of Spring Roo.
  8. Get 90 minutes with Chris Richardson at SpringOne2GX 2013 as he discusses futures in Java, Scala and Javascript. And no, we don't mean product roadmaps. Check out his session titled: Futures and Rx Observables: powerful abstractions for consuming web services asynchronously.
  9. You you still think that Spring is just for dependency injection? Join Mark Secrist for an amazing and revealing look at fundamental concepts like the underlying design patterns, and building blocks of the framework - highly reusable insights. Watch the replay of his SpringOne2GX 2013 session: Going beyond Dependency Injection.
  10. Xavier Padró put together a nice post on how to use Spring Integration to configure a timeout when acting as a web-service client
  11. IntelliJ ninja Andrey Cheptsov has put together a lovely post on how to use the Jetbrains-originated language Kotlin, the NoSQL database MongoDB, Spring Boot, and the PaaS Heroku together. Nice!
  12. Petri Kainulainen is back at it again, this time with a great post on using jOOQ - which makes working with SQL easier - along with Spring to handle paging and sorting.
  13. Roger Hughes has a cool post on tracking exceptions with Spring's Quartz scheduling support.
  14. There are some nice posts on the Time is running out, don't lose it. blog. The first one of note is this post on a weird ClassNotFoundException that presents itself on older versions of Spring Integration on JBoss EAP 6.2
  15. The second, slightly older, post is on using the Spring Integration MQTT adapter to communicate with MQTT-powered services. MQTT is a lightweight messaging protocol that is at the heart of many internet-of-things based solutions today. Who knows? Your refrigerator might be using it! :)
  16. Want to run a more production-like Hadoop instance on your local machine? Don't want to run a full virtual machine? Check out this post on deploying Pivotal's HD Hadoop distro using Docker! (and then, check out Spring for Hadoop and Spring XD!)

Project Sagan: client-side architecture

Engineering | Brian Clozel | April 28, 2014 | ...

Now that we know a bit more about JavaScript modules, we're ready to dive into the client-side architecture of the Sagan application.

Note: If you haven't read previous blog posts on the Sagan project, you should know that this is the Spring reference application that powers this blog and everything else at spring.io. Previous posts showed out to run this application, how we do zero downtime deployments and also how we upgraded Sagan to use the latest JDK8 features.

In this post, I want to walk through the basics of the client-side architecture in the Sagan application:

  1. Why is the client application in a separate sagan-client project module?
  2. How is it linked with the sagan-site module?
  3. What are npm, bower and gulp?
  4. How do those tools work together to make the client application?

This Week in Spring - April 22nd, 2014

Engineering | Josh Long | April 22, 2014 | ...

Welcome to another installment of This Week in Spring! This week I'm in Bangalore, India, for the Great Indian Developer Summit talking to developers about (wait for it..) Spring! I also met with a large system integrator here in Bangalore's Electronic City and addressed a large team of architects and engineers using Spring on projects worldwide. India's an interesting place because so much of their business comes from companies abroad who are trying to get extra help on otherwise overwhelming projects. Naturally, anything that helps get more done, quicker, is of interest here and Spring's a favorite. Needless to say, Spring Boot resonated a lot! It's not all work, though, when the local food is as good as it is here! :)

Lots of webinars and replays this week - we've got a lot to cover, so let's get to it!

Project Sagan: Upgrading to JDK 8

Engineering | Chris Beams | April 18, 2014 | ...

As I'm sure most readers are aware, Java SE 8 was released last month. In conjunction with the recent release of STS 3.5.0 and its complete support for JDK 8, we thought now would be an ideal time to upgrade Sagan to take advantage of the new language features and APIs.

Note: Not yet familiar with the Sagan project? It's the Spring reference application that powers this blog and everything else at spring.io. Check out the first three posts in this series for more details.

Cloud Foundry's Java buildpack has provided support for JDK 8 since the day it was released. To begin using it, we've created our own fork of the buildpack, bumped the JDK version from 1.7.0 to 1.8.0, and configured our Gradle build

Spring MVC Test with Geb

Engineering | Rob Winch | April 15, 2014 | ...

In my third post I discussed how to use WebDriver to make designing our tests easier with the Page Object Pattern. In this post, I'm going to discuss how to use Geb to make our testing with MockMvc more Groovy.

Why Geb and MockMvc

Geb is backed by WebDriver, so it offers many of the same benefits we got from WebDriver. However, Geb makes things even easier by taking care of some of the boiler plate code for us. Of course we want to use MockMvc so that we do no need to deploy our code to a server. The easiest way to understand the benefits of using Geb is to jump into an example.


NOTE: Another great feature of Geb is its exceptional documentation

This Week in Spring - April 15, 2014

Engineering | Josh Long | April 15, 2014 | ...

Welcome to another installment of This Week in Spring! This week, I'm in Paris, France talking to developers about Spring Framework 4.0, Spring Boot, and more at Devoxx FR. Next week it's off to Bangalore, India for the Great Indian Developer Summit. As always, ping me online if you're around either location and want to talk Spring.

  1. Tuesday April 30th Webinar - don't miss Ashley Puls (New Relic) and myself as they track and trace through modern web apps: Web Application Diagnostics with Java and Javascript
  2. Tuesday April 22nd Webinar - see what stole the EclipseCon 2014 keynote: Martin Lippert and Mike Milinkovich demoing alpha versions of Project Flux: Connecting Eclipse to the Cloud-Based Era of Developer Tooling. Register today!
  3. Thomas Risberg and Janne Valkealahti show how they can use a single programming model / configuration model for Java MapReduce, Streaming, Hive, Pig, Cascading, or HBase in this SpringOne2GX 2013 Replay: Getting started with Spring Data and Apache Hadoop
  4. 90 minutes with Jags Ramnarayan and Anthony Baker at SpringOne2GX 2013: In-memory data and compute on top of Hadoop
  5. Check out Kevin Nilson (Google) and myself co-presenting at SpringOne2GX 2013 on Spring Profiles, and how it is an amazing tool for managing code through the normal dev/stage/production lifecycle: Multi Environment Spring Applications.
  6. I'm back with Roy Clarkson at SpringOne2GX 2013 talking about Spring Mobile/Android, REST/OAUTH and more in: Building Smart Clients with Spring
  7. Erdem Günay has put together a very nice post on how he used the Spring Expression Language (SpEL) and Spring Boot to dynamically send remote installation instructions to a wide array of Android clients, dynamically.
  8. Our pal Sam Brannen is going to be speaking at the Atlanta Spring User Group! One of the smart
  9. Moritz Schulze put together a very, very detailed post on how his company developed a time tracking, vacation-time managing application called Trackr with Java 8 and Spring Boot
  10. Mario Arias has put together a version of the Spring relational data Getting Started Guide using the Kotlin language. Kotlin is JetBrains' statically typed programming language to JVM byte codes and JavaScript. Very cool! I have never seen the kotlinprimavera module(s) before, but I dig it!
  11. Patrick Chanezon, director of enterprise evangelism at Microsoft, sat in on the vJUG meetup talk I gave on Spring Boot recently and set about hacking! The result is some guidance on how to deploy a Spring Boot application to Microsoft's Azure PaaS. Nice! Merci, Patrick!
  12. Hai Nguyen has put together a very nice post on how to configure / consume an embedded Jetty's JNDI-bound DataSource
  13. Did you miss Spring framework lead Juergen Hoeller's epic talk about Spring 4 and Java 8 from GOTO Amsterdam? Have no fear, you can watch it online!
  14. This is a particularly PaaSy This Week in Spring! Kim Saabye Pedersen has written a nice post on using Spring Boot on RedHat's OpenShift PaaS
  15. Our friend Petri Kainulainen is back, this time with a very nice post on using JOOQ with Spring. Petri's an amazing person to have in the community. I hope you don't need me to tell you that. Bookmark his site. It's almost always worth it.
  16. Our pal at Netflix, Tomás Lin, is back! This time he's got a post on bundling web content with Spring Boot and Gradle
  17. Michael Simons posted a very detailed post on how he's developing a Boot web application. Thanks for the detailed writeup, Michael. Very valuable feedback.

Cache Abstraction: JCache (JSR-107) Annotations Support

Engineering | Stéphane Nicoll | April 14, 2014 | ...

Spring's caching abstraction is available as from Spring 3.1 and it was about time to show it some more love. In this post, I want to walk you through the major improvement in that area which is the JCache (JSR-107) annotations support.

As you may have heard, JSR-107 went final after all, 13 years after the initial proposal. For those who are familiar with Spring’s caching annotations, the following table describes the mapping between the Spring annotations and the JSR-107 counterpart:

Spring JSR-107
@Cacheable @CacheResult
@CachePut @CachePut
@CacheEvict @CacheRemove
@CacheEvict(allEntries=true) @CacheRemoveAll

JavaScript modularity (without the buzzwords)

Engineering | Brian Clozel | April 11, 2014 | ...

Almost ten years ago Adrian Colyer wrote a memorable blog post, giving the best explanation on aspect oriented programming (AOP) out there: clear and simple style, accurate content, no buzzwords. If you've taken a look at the the earlier two posts in this series, you may have noticed some of our architecture choices in the client module of the Sagan application, including the use of JavaScript modules.

In this post, I want to walk you through the basics of JavaScript modules in the style of Adrian's post: clear, simple, accurate, no buzzwords!

Why JavaScript needs modularity too

If, like me…

Get the Spring newsletter

Thank you for your interest. Someone will get back to you shortly.

Get ahead

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

Learn more

Get support

Tanzu Spring Runtime 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