This week in Spring: May 24th, 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 use the Roo plugin, either way!)

  7. Leveraging the Spring HandlerMethodArgumentResolver interface
    is a fantastic blog for those looking towards the imminent Spring MVC 3.1, which will include a general refactoring of the internals of the MVC resolution mechanism. Your existing code will continue to work with no problems, of course, and you don’t need to understand the machinery to leverage Spring MVC. But, if you do want to extend the resolution mechanism, then it’s simpler now. This blog illustrates the point rather nicely by extending the processing pipeline in Spring 3.1.
Read more

This Week in Spring: May 10th, 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 - &#163 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!

Read more

Better DSL support in Groovy-Eclipse

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 Groovy-Eclipse supports DSL descriptors (DSLDs), supporting custom DSLs in Groovy-Eclipse will become significantly easier.

Read more

This week in Spring: May 3rd, 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 (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="">register for the event</a> closest to you. 

  4. Spring Security 3.1.0.RC2 Released – the title sums it up. Check out the link for the changelog. For more on Spring Security, keep reading - there are a couple of very interesting posts about Spring Security a little further down!
  5. Spring Social 1.0.0.M3 Released. The new release continues the exciting evolution of the core concepts laid out in the earlier releases. Specifically, this new release enhances the APIs for some of the social APIs, extends the plugin mechanism, and provides a pre-packaged Spring MVC Controller that adds provider sign in capability to your application.

  6. On the CloudFoundry blog, Killian Murphy updates the community on the latest and greatest on in the CloudFoundry project. The activity’s been amazing, and the fact that - in the three weeks since CloudFoundry’s debut - people have submitted pull requests for JRuby, PHP and Erlang support in the CloudFoundry open-source PaaS is a testament to this. Amazing!

  7. Recently, SpringSource put up a survey about dm Server and Virgo usage. The results of that survey are available here.

  8. In this post - Single Spring Application Deployment for both Local and Servers - David Salter introduces Spring 3.1’s profiles, and how to use them to deploy a single both locally and in the cloud. Check it out for a good step-by-step!

  9. Tobias Trelle introduces RabbitMQ and Spring, walking the developer through installation and setup.

  10. Rafal Borowiec introduces Spring Security 3.1’s enhanced security namespace configuration.
  11. Steffen Luypaert writes an interesting post on migrating from Spring Security 2 to Spring Security 3. It highlights the few specific steps - including a few “gotchas” that might strike very specific cases - required to ensure a smooth upgrade. Very cool!

  12. A perspective on the CloudFoundry PaaS. The thrust of it - that CloudFoundry reduces friction and enables developers - should resonate well with the numerous developers who’ve had a chance to work with it already. Check it out, and of course then follow up with a visit to and to try it out for yourself and learn more!

  13. People ask me frequently about the best way to learn Spring and how to get training to improve their Spring skills. Without exception, I refer them to the SpringSource training that is created by the project leads and engineers behind the Spring technologies. The trainers are also some of the most knowledgeable people at SpringSource - they have the macro, birds-eye view and the micro view of the entire technology stack from concepts to API to implementation. So, I’m pleased to remind you that SpringSource has just announced new certifications for trainings and the training schedule. See this overview of certification and this schedule post for more information.

    If you’re like me, and you’ve been using and advocating Spring and the Spring projects since the very beginning, then please understand that there’s very likely still something for you in this training. I was stunned by how much I learned!

Read more

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

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 environments for our applications, so we stovepipe ourselves through sheer inertia.

Read more

Getting Started with Redis, Spring Data & Cloud Foundry

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.

Read more

This week in Spring: April 26th, 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="">register for the event</a> closest to you. 

  7. The Eclipse Virgo 2.1.1 and SpringSource dm Server 2.0.5 projects have just been released.
  8. Jon Brisbin has recently blogged about integrating RabbitMQ with Riak to build a highly scalable eventing model.
  9. Gordon Dickens is at it again! He’s written a blog post, Don’t Use the JmsTemplate in Spring! Once you get past the headline and read the post, I think you’ll agree it might be better titled “Don’t Use the JmsTemplate in Spring, Use Spring Integration!”

    It’s a great post and it captures the thought trail that leads people to Spring Integration: they like the simplicity and power of Spring’s JmsTemplate, but want to enjoy the same programming paradigm in other challenges.
  10. What’s in My Spring Context? Gordon Dickens writes what amounts to a conversation between him and the Spring ApplicationContext - the keeper of all beans. The Spring ApplicationContext is very powerful, and can be interrogated to understand the structure and shape of your object graph. Great post, with easy-to-use code!
  11. ThoughtWorks employee Mark Needham has written HTML encoding/escaping with StringTemplate and Spring MVC, which provides a recipe to write a custom view resolver in Spring MVC. Spring MVC’s strikes the nearly perfect balance between convenience and power in this case. Spring MVC, of course, has several good, pre-provided options for view resolution, but is flexible enough to support new ones.

  12. David Salter has written a post introducing deployment of a database-centric application to CloudFoundry. His example includes deployment tips and information on how to use Spring 3.1 profiles to let the application use the correct, environment-specific DataSource. Nice article!
  13. David Salter has written a follow up blog on migrating older Spring MVC Controller-hierarchy based applications to the annotation-centric model introduced in Spring MVC 2.5, four years ago. In this blog, he talks about converting form-processing controllers, of type FormController. Check it out! A fascinating read and it’s nice to see how much configuration and Java code just falls away in the new programming paradigm!
  14. Nicolas Frankel has written about his experiences using the CloudFoundry public cloud and project. He writes in terms of a developer that has used the Google App Engine, so it’s a particularly compelling story with lots of details.
Read more

Advanced Spring Data JPA - Specifications and Querydsl

In my last blog post I introduced the basic feature set of Spring Data JPA. In this post I’d like to dive into some more features and how they can help you simplify data access layer implementation even further. The Spring Data repository abstraction consists of an interface based programming model, some factory classes and a Spring namespace to easily configure the infrastructure. A typical repository interface looks something like this:

public interface CustomerRepository extends JpaRepository<Customer, Long> {

  Customer findByEmailAddress(String emailAddress);

  List<Customer> findByLastname(String lastname, Sort sort);

  Page<Customer> findByFirstname(String firstname, Pageable pageable);
Read more

Eventing Data with RabbitMQ and Riak

As new applications take advantage of the scalability benefits of message brokers like RabbitMQ and cloud-scale datastores like Riak, it’s inevitable that the two should become fast friends (the kind who actually talk to each other in person rather than the kind whose only contact is through Facebook).

So many of the applications we find ourselves writing these days have these two functions in the same application. Very often we want to update data as the result of a message or send a message as the result of updated data. Two new utilities facilitating RabbitMQ and Riak integration allow you to do either directly inside their respective servers.

Read more

Deeper into Grails & Cloud Foundry

In my previous post, I showed you how easy it is to deploy a Grails application to Cloud Foundry using the corresponding plugin. Hopefully that whetted your appetite and you are ready to look at a more complex Grails application that demonstrates the power of the GORM plugins and stretches the Cloud Foundry services. If you don’t have a Cloud Foundry account yet, please be patient. The response to the announcement has been phenomenal so it is going to take some time to work through the backlog of requests.

Read more