Countdown to Grails 2.0: Unit testing

Engineering | Peter Ledbrook | June 07, 2011 | ...

The first milestone of Grails 1.4 (now 2.0) has now been released and we are on the last stages of the journey towards 1.4 2.0 final. As we approach that point, I will be writing a series of blog posts that cover the various new features and changes that the 1.4 2.0 version brings. I'll be starting with the new testing support.

Since the beginning, Grails has provided three levels of testing support for developers: unit, integration, and functional. Unit tests had and still have the benefit of running independently of Grails, but they typically required a fair bit of extra work in the form of…

A Simple Groovy DSL for building RabbitMQ AMQP Applications

Engineering | Jon Brisbin | June 01, 2011 | ...

Asynchronous applications can sometimes be a challenge while you're developing them since you usually need two separate components to see the full message publication and consumption lifecycle. It often happens that you write a consumer that can dump messages to System.out or your log file, just so you can make sure your publisher is doing the right thing. It would be really handy if you could mock the message publication and consumption interaction in a single component so you could actually see what's going on.

The RabbitMQ Groovy DSL aims to help with this by providing a very concise and…

This week in Spring: May 31st, 2011

Engineering | Josh Long | May 31, 2011 | ...

The excitement continues today at the SpringSource S2G forums here in London! The energy leading up to the event has been staggering, and the talks - on a wide variety of deep, technical topics - are very impressive! I've had several of my questions answered, and learned a lot about some of the new, interesting, upcoming technologies from SpringSource. If you didn't get a chance to attend this year, we will be posting the session slides next week. Also don't forget, there is still SpringOne 2GX later this year (October) in Chicago!

  1. Many people love Spring Batch as soon as they give it a try, and many of those people then start trying to tell others about it precisely because it's so wonderful to know that they won't have to solve the problem themselves. Batch processing's something we all do at some point or another: moving data from database to another, reading from a file system, making web service calls and need to handle retry logic, etc. These use cases (and many more) are natural fits for Spring Batch. If you want to see one very succinct, useful introduction to the technology with an emphasis on code, check out Sanjoy Kumar Roy's blog introducing Spring Batch. Very cool! If you give Spring Batch a try and feel like you have something to add to the discussion, write a blog and ping me to let me know so I can highlight it on this page!.
  2. 	<li>
    		Roy Clarkson notes that starting May 28, 2011, the repositories for <a href="">Spring Android</a> and <A HREF ="">Spring Mobile</a> have moved to GitHub, and are available at the following URLs:
    	<div><b>Spring Android:<br/></b>
    		<UL><li><a href="">Spring Android</a></li>
    		<LI><A href="">Spring Android Samples</a>
    			</li> </div>
    				<div><b>Spring Mobile:<br/></b>
    					<UL><li><a href="https…

This week in Spring: May 24th, 2011

Engineering | Josh Long | May 24, 2011 | ...

What a week! Excitement is in the air as we near the S2G Forums here in Amsterdam on the 26th and then next week in London on the 31st of May. If you're in Europe, be sure not to miss these exciting, jam-packed days with talks on all manner of topics including Spring, Grails, the cloud, big data and of course tooling.

  1. Mark Fisher and Ramnivas Laddad presented their hit webinar - "From Zero to Cloud in 60 Minutes" - on Cloud Foundry last week. Thank you all for attending and making it a success! If you missed it, you can still get the slides and watch the replay here. Note that there are, as usual, lots of other resources there once you're done with the CloudFoundry webinar. Check out the other developer webinars (scroll down, click on the "Developers" tab), and check out the SpringSource Dev YouTube page.
  2. Juergen Hoeller, the Spring project lead, presented on the next generation of Spring -- Spring 3.1 and beyond, at QCon London earlier this year. His talk and slides are available on
  3. The video for the Getting Started with Spring Data Graph webinar is available, as well. This webinar introduces the Spring Data Graph project - a joint effort between the Spring and Neo4j engineering teams to bring first-class support for Neo4J to your Spring applications. If you want a more natural way to integrate the NOSQL data technologies in your existing architecture, simply want more speed, or want to see what you're missing, then you should definitely check this webinar out.
  4. In a fantastic example of eating ones own dogfood, Mark Thomas - Tomcat committer and Apache Bug tracking infrastructure maintainer - explains how the Apache JIRA interface was being whelmed - not overwhelmed, but still running inefficiently - by search engines that hit specific JIRAs, but didn't maintain a session cookie, triggering the creation of numerous sessions. Mark describes the creation of a custom Valve for Tomcat 7 (and SpringSource's tcServer) that associates a single Tomcat session with each web crawler, greatly reducing their footprint.
  5. Spring Web Services 2.0.2 has been released. For more information, see the change log. Spring Web Services has also been released. For the changes in this release, please see the changelog. Both releases include some worthy updates in of themselves, but, importantly, both also resolve a potential security issue. It is recommended that users upgrade as soon as possible.
  6. <LI> Google I/O, Google's developer conference, is an exciting time for enterprise Java developers, and of course, this also means Spring developers. One notable announcement was the <a href="">1.0 release of the Spring Roo plugin for Vaadin,</a> which is a widget-centric approach to web application development.  Vaadin's a very innovative way to build web applications today, and - of course - <a href="">it works well with Spring.</a> (NB: those instructions are old, but they should still work, and you can just…

This Week in Spring: May 10th, 2011

Engineering | Adam Fitzgerald | May 11, 2011 | ...

May's well underway and all the preparations for the S2G Forums in Amsterdam and London are complete. These S2G Forums are the premiere place for people in Europe to get access to the best information related to the Spring community (at a minimum cost!). I hope we'll see you in Amsterdam (May 26, 2011 - € 114 ) and / or London (May 31, 2011 - £ 99)!

In the interim, those of you that want an even better picture of how the Spring framework plays on the nascent CloudFoundry open-source cloud PaaS project should be sure to attend a webinar - Spring from Zero to Cloud in 60 minutes for both North America and Europe in just 10 short days!

  1. SpringSource Tool Suite 2.6.1 Released. This release features the usual updates and features. Some particularly notable features: an updated bundled version of vFabric tc Server, version 2.5, improved support for tc Server instance creation and an update to the latest release of Spring Roo, version 1.1.3 and (yay!) bundled support for CloudFoundry. Check out the New and Noteworthy PDF document for the details.
  2. 	<li> The  <A HREF="">CloudFoundry blog</a> has run two different parts with a detailed look at  what happens when you <code>push</code> applications to the CloudFoundry project. The first post details what happens from the <a href="">client-side perspective</a>. The second post provides details on what happens from <a href="">the cloud-side perspective, once the…

Better DSL support in Groovy-Eclipse

Engineering | Andrew Eisenberg | May 09, 2011 | ...

The Groovy language is an excellent platform for creating domain specific languages (DSLs). A good DSL can make programs more concise and expressive as well as make programmers more productive. However, until now these DSLs were not directly supported by Groovy-Eclipse in the editor. When DSLs are used heavily, standard IDE features like content assist, search, hovers, and navigation lose their value. For a while now, it has been possible to write an Eclipse plugin to extend Groovy-Eclipse, but this is a heavy-weight approach that requires specific knowledge of the Eclipse APIs. Now that…

This week in Spring: May 3rd, 2011

Engineering | Josh Long | May 03, 2011 | ...

It's May, already! Seems like just yesterday we were toasting the arrival of the new year...

As they say, time flies when you're having fun! This year's been a roller coaster - exciting news and events every day - too much to keep up with, certainly!

  1. Jon Brisbin has written up an epic post introducing the CloudFoundry project and many of the technologies that you can use on it.

    This was just put up today, and is now one of my favorite blogs introducing CloudFoundry; it's so ambitious, just like CloudFoundry itself!

  2. Another masterpiece of a sample is the blog that Costin Leau wrote, Getting Started with Redis and Spring Cloud Foundry. This post is well worth reading whether you're doing CloudFoundry, Spring Data, or both. A dynamic duo, indeed!
  3. <li>European community members can learn more about Spring, Spring Data and Cloud Foundry at the S2G Forum Series: <a href="">Amsterdam…

Using MongoDB, Redis, Node.js, and Spring MVC in a single Cloud Foundry Application

Engineering | Jon Brisbin | May 03, 2011 | ...

Traditionally, applications have been defined by the principle technology they use. If you're building a Spring MVC application, we call it a "Java app". Since our application is primarily composed of Java components, we tend to stay in our own yards and not be terribly friendly with our neighbors until we're forced to interact with them. We set up Java-based application servers and tend to think first of going to the Java language to solve a problem in our application whether that language is the best choice or not. It has usually just been too difficult to maintain multiple sets of runtime…

Getting Started with Redis, Spring Data & Cloud Foundry

Engineering | Costin Leau | April 27, 2011 | ...

One of the drivers behind the popularity of NoSQL solutions is performance (especially) under heavy loads. Due to their data model, key value stores lead the pack, providing lightweight yet flexible means of working with data. In this entry, I am going to quickly showcase what it takes to work with a key value store (Redis) using Spring (Spring Redis) through one of Spring Data samples (RetwisJ) and deploy the app into the cloud (through Cloud Foundry) to share it with the world. I am going even further by using Windows, as a deployment platform for a change.


A popular choice among key-value stores is Redis, an open source, crazy fast database written in ANSI C weighting around 200 KB (yes, kilo-bytes) for the server or 400 KB for the entire package (includes a command-line client and some administration utilities) and available virtually on all major platforms which also makes it the choice for the sample. Note that a Redis instance is not needed unless one wants to run the sample locally. If so, for Windows users (such as the author) yours truly uses (and recommends) this pre-packed version available in both 32-bit and 64-bit flavours.

Spring and NoSQL

If you are using NoSQL from a Java environment, take a look at Spring Data: it's not a project by itself but rather an umbrella of projects embracing the various new data access technologies such as non-relational databases (like Redis or MongoDB), map-reduce frameworks (think Hadoop) and cloud-base data services for Java apps. Spring Data promotes the classic Spring values, enhancing developer productivity by removing the API noise, boiler-plate code and resource management and offering a consistent programming model. It builds on top of existing Spring features and projects (such as inversion of control, life-cycle management, type conversion, portable data access exceptions, caching and so on) so one can add it right away, with minimal effort in her application. And of course, just like the rest of the Spring projects, it is open source and available under Apache license.

Spring Data Redis

In the case of Redis, Spring Data offers dedicated support through the Spring Data Redis or simply Spring Redis project. It offers both low-level and high-level features ranging from portable Redis client abstractions (allowing different Redis clients such as Jedis, JRedis or RJC to be changed with literally one configuration line) to Redis-backed atomic collections or counters or pub-sub support. The project reference documentation covers these topics in great detail.

RetwisJ, YATC - Yet Another Twitter Clone

RetwisJ source code, including the code in this blog, can be downloaded at Spring Data Key Value sample project. Further more, documentation is available at here

RetwisJ can be seen as the Java port of Redis' Retwis sample: a simple Twitter-clone that demonstrates how one can replace expensive joins in a traditional, relational database with Redis flexible data model (such as set intersections

This week in Spring: April 26th, 2011

Engineering | Josh Long | April 26, 2011 | ...

Another week, another great allotment of new content that - as usual - draws from the community and from SpringSource. The enthusiasm for CloudFoundry continues unabated this week, with some interesting content in this week's roundup. For more content on CloudFoundry, you might consult the and sites. In particular, the slides from the Cloud user group held the day after the announcement are available here.

  1. Oliver Gierke has posted a blog on Advanced Spring Data JPA which explains how to use the features in the Spring Data JPA project that elevate the art of JPA programming, like the integration of the QueryDSL library. This post - and the library - speak to the ongoing, first-class support in the Spring frameworks for all data access technologies, be they RDBMS, NoSQL, or anything else.
  2. Peter Ledbrook, Grails Developer Advocate, has recently expanded on his original blog on using Grails and CloudFoundry.

    This blog provides a detailed look at using Grails' GORM support with the various data stores available on CloudFoundry. Check it out!

  3. Alex Popescu's MyNoSQL portal, MyNoSQL, has some interesting comments about the NoSQL options supported in CloudFoundry. He comments that "From a storage perspective, Cloud Foundry is encouraging polyglot persistence right from the start offering access to a relational database (MySQL), a super-fast smart key-value store (Redis), and a popular document database (MongoDB)."
    This post - and indeed the entire site - is a very valuable resource for CloudFoundry users that want to exploit the NoSQL options, but don't understand the use cases yet. There's a lot of good content on both MongoDB and Redis, for example.
  4. Mark Thomas, Apache Tomcat 7 release manager and engineer, has written up a post on Apache Tomcat 7's session fixation protection security feature on the website. Keeping on top of the latest Tomcat security features is important if you are, like the majority of developers, using Tomcat (or hardened, ops-friendly derivatives like SpringSource's tcServer) as a production server for your Java (and often Spring) applications. Additionally, Tomcat's bundled with several application servers. Either way, knowing about Tomcat's industry-leading features can only help.
  5. Costin Leau has announced the Spring GemFire 1.0.1 release, which incorporates bug fixes and promotes stability.
  6. <li>Just a reminder to our European community members, the S2G Forum Series will be held in <a href="">Amsterdam (May 26th)</a> and <a href="">London (May 31st)</a>. There will be tons of great sessions about Spring, Groovy and Grails as well as talks focused specifically on CloudFoundry, Tomcat and Gemfire so be sure to <a href…

Get the Spring newsletter

Thank you!

Get ahead

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

Learn more

Get support

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