This Week in Spring
Welcome back to another
installment of This Week in Spring.
We're in December, folks. I just can't believe that it's already December.
Um, OK, ignore me.
Let's get into the roundup because there is a lot of new content this week.
Did you miss SpringOne? Well, that's a shame. You missed out on a lot. However, don't fret, our friends at InfoQ
are riding to the rescue with a steady stream of videos from the different talks at SpringOne2GX.
The first two talks on the docket? The opening keynote with SpringSource CTO Adrian Colyer,
SpringOne 2Gx Keynote - Spring, Yesterday, Today and Tomorrow.
On day two, Ben Alex lead the SpringOne 2GX technical keynote, a procession of
demonstrations and thought provoking insights into next generation application development with Spring and on the cloud.
- Ramnivas Laddad, all around great guy and one of the brilliant, mad scientists on
the Cloud Foundry team (not to mention one of the mad scientists on the Spring team), has put together a quick video on deploying Spring applications to Cloud Foundry.
- Spring Data JPA 1.0.2 has been released.
This new release has a lot of new features, including query creation for
fixed alias detection when entity name contains a number,
an update to QueryDSL 2.2.5,
fixed auditor mappings in
Expression creation for property references and sort orders,
and fixed dependency injection in
There are lots of new features in this release that I've not mentioned here, and, even better, there's a
lot of new features already in the development pipeline for 1.1 RC1.
One of the new features in the works?
Support for locking, which lets you apply declarative locking
to your repository queries.
Jared Rosoff (10gen) and Thomas Risberg (SpringSource)
show the power of the combination of MongoDB, Spring and Cloud Foundry in this video.
I just gave a talk on Mongo DB and Spring on Cloud Foundry at the Mongo Seattle event, on the same day this was made available. As soon as I got back to my hotel room, I rushed to watch this talk. These guys are giants, and I always learn something from them.
Umm... so... what are you waiting for!
Dr. David Syer, lead of the Spring Batch project and SpringSource mad scientist at large,
has written about
cross site request forgery and OAuth2.
Dave's gift is that he can tackle really complex things and reduce them to
chunks that can be consumed by the rest of us. It's what makes him one of the best developers out there, and it's what makes the articles that he writes absolutely amazing.
- Mrabti Idriss has written a high level overview of his application's GWT-based Spring and GWT architecture.
There's not a lot of details here, because he describes a real-world application with many moving parts, but it's useful to see how the pieces stack together.
The Spring Security project's used by a good deal many people in all sorts of ways.
This tutorial / blog introduces
how to setup
LDAP Active Directory authentication in with Spring Security.
Atlanta Spring User Group leader and SpringSource engineer Gunnar Hillert has published the deck he used when he presented Cloud Foundry for Spring Developers.
Using Hibernate? This blog, by frequent Spring blogger Baeldung,
how to use Hibernate's contextual sessions with Spring's declarative transaction management
- Running Spring 1.x and looking to migrate to Spring 3? Using Quartz? This blog
recounts one developer's migration to Quartz 1.8.x and Spring 3.0.x along with new example code.
Concise, and straight to the point. Check it out! That said, be warned that Spring 3.1's very imminent and it will support 2.0. So, if you're going to jump, jump to 3.1!
- Apache Tomcat 6.0.35 has been released.
Apache Tomcat 6.0.35 is primarily a security and bug fix release. All users of older versions of the Tomcat 6.0 family should upgrade to 6.0.35.
Adobe Technical Evangelist Christophe Coenraets demonstrates how to build mobile applications with Flash Builder and BlazeDS and Spring Flex in this short video.
Les experts d'Infotel have published a blog introducing how to deploy applications to CloudFoundry.
This is a useful blog that provides a lot of up-to-date information and is highly recommended. This article is written in French, but through the magic of Google Translate and the fact that code's a pretty universal language, there's a lot to be had here.
- Mike Ensor has also written up a great, concise introduction to getting started with Cloud Foundry.
Welcome back to another installment of This Week in Spring. There's a lot to talk about this week as well as a bevy of new releases, so let's get right to it!
- Chris Beams has announced the latest and greatest release of Spring 3.1, RC2. This is the intended final release so get the bits and try it out soon. For a tour of what's what in Spring 3.1, check out the release notes and the Spring 3.1 blog series
The steady march to Spring Integration 2.1 GA continues. This week, Spring Integration 2.1 RC1 was released.
There are a lot of new features in Spring Integration 2.1, including support for GemFire, RabbitMQ, MongoDB, and much, much, more. For the full details, see the release notes.
SpringSource Tool Suite lead Martin Lippert has announced the latest release of SpringSource Tool Suite, version 2.8.1, which provides a very compelling feature: compliance with both versions of the Maven plugins typically supported: M2E, the new, Eclipse-foundation supported integration, and M2Eclipse, the original integration furnished by Sonatype. This makes it possible for developers to upgrade and transition easily. All users are encouraged to upgrade immediately.
- Spring Roo project lead Alan Stewart has announced that Spring Roo 1.2.0.RC1 has been released. The new release is packed with new features, including multi-module Maven projects, JSF 2.0 and RichFaces support, and much more.
Daniel Mikusa has put together a fantastic post introducing
JVM performance tuning while running Apache Tomcat. The post introduces the various command line options, including
-XX:MaxPermSize, as well as some details about choice of JVM garbage collector. Nice post!
- In this new video interview from InfoQ, Spring expert Costin Leau talks about Spring Data, caching, data grid architectures and work on a new Spring Hadoop project.
- BSB labs has put together a wonderful post on remote partitioning with Spring Batch.
Spring Batch, as readers already know, is a powerful framework for building batch jobs. Spring Batch makes it dead simple to handle long running, multi-step batch processing jobs, and - with remote partitioning, it is even easier to partition those jobs across multiple nodes. This post introduces some of the cool features in the remote partitioning features available in Spring Batch. Check it out!
eWeek has an interesting post about a recent Evans Data survey that found that developers prefer Cloud Foundry. Not a lot of technical content, of course, but this provides a lot of good insight into why others are choosing Cloud Foundry and can be useful when you're trying to make the case for Cloud Foundry in your organization.
- ActiveState, creators of the Stackato cloud, which is based on Cloud Foundry (the open source PaaS from VMware), has announced that their Micro Cloud will remain free after the beta is finished. This ensures that developers can develop against the cloud in perpetuity.
Spring uses proxying to work its magic. There are three types of proxying that each have their own advantages and disadvantages.
Tomasz Nurkiewic introduces how Spring uses dynamic proxies, CGLIB proxies, and AspectJ proxies as well as some of the potential pitfalls. This is a very nice post!
- Stacey Schneider has put together a great post on the new 7.0.23 release of Apache Tomcat.
Among the new features in the new release, you'll find the ability to start and stop web applications in parallel to improve startup times, caching the of configuration files, and improved handling of failed deployment restarts.
- Eclipse Virgo 3.0.2 has been released. This new release fixes several bugs.
Welcome back to another installment of This Week in Spring. For those of us in the US, the Thanksgiving holiday is upon us.
Generally, the idea behind Thanksgiving (which has analogs in many other countries, as well) is to have a day to reflect on the things we are thankful for.
In that spirit, let me offer one of the things that I am thankful for: thank you, dear readers, for being part of the most awesome
community out there.
Between all the cool stuff you guys are doing and all the cool stuff happening at SpringSource,
it is an absolute pleasure to put together this roundup every week. We hope you have a wonderful week and we look forward to seeing you next week.
The video from the Spring Data Neo4J screencast is up
and available for those of you who missed it. In addition to this, there is a lot of great recorded content on the SpringSource YouTube page.
Eugen Paraschiv has continued his epic run of blog posts, this time introducing
basic and digest authentication for a RESTful Service with Spring Security 3.1. What an amazing series of blogs! Keep it up Eugen, and thanks for this latest post!
- WIRED has a great article on the backstory behind Cloud Foundry.
Not a lot of technical information in this particular post, but you do get introduced to some of the awesome Cloud Foundry team, and there's an awesome story there. Check it out!
- Geraint Jones has written up a really good introduction to setting up a Spring MVC application, complete with code.
- Jorge Hidalgo has written up a really exhaustive tour of how to use Cloud Foundry and Spring. It shows how to use a SpringSource Tool Suite and the Cloud Foundry support,
set up a Spring application, and set up data access using MySQL.
Do you like the Spring Expression language? Want to use it in a scripting language?
Alex Soto has a blog discussing how to use the Spring Expression language as a JSR 233 scripting engine. The Spring Expression language is one of my favorite parts of the Spring framework.
If you look, the large majority
of the code in that expression language was written by a Andy Clement, another one of the mad scientists
helping make the Spring projects amazing.
The implementation of the
Spring Expression language,
just like the rest of the framework, is
beautiful code, and offers a lot to learn about if you like grammar and parser design.
- TomcatExpert.com has some very interesting
posts on tuning
Tomcat's performance. The first post is on setting up measurement of garbage collection in Apache Tomcat.
The second post, which went up today, is about performance tuning in the JVM.
Do you like Cloud Foundry?
Please consider voting for Cloud Foundry
at this year's Crunchies. Voting's really easy, so don't delay!
- I saw some
wonderful news on the
@vFabric account while trolling Twitter today: the
Spring Migration Analyzer's been open sourced and made available!
The Spring Migration Analyzer is a tool that analyzes Java EE applications for possible routes to a leaner, cleaner Spring based application.
It produces a report when run on a
For more information on how to run the tool, see the
Another fantastic week in the Spring community. Can you guys believe it's already the 8th of November? Where does the time go?
If you blink, we'll be in 2012 already!
No time to waste - the year might change out from underneath us! - let's dive right into this week's roundup!
- Ramnivas Laddad, senior engineer on the Cloud Foundry project and a hero world wide to those who - like me - enjoy the use of AspectJ in their Spring applications, has put together a fantastic post shining a light on the specific support for services (like MySQL, PostgreSQL, and RabbitMQ) in Cloud Foundry. This is the second post in a series. Read the first one to learn about the basics of services on Cloud Foundry. Awesome posts with great details.
- This next post is among the posts that made me smile this week. Roy Clarkson and I did a talk at SpringOne 2GX a few weeks ago on native Android development practices with Spring. We sat down the night before our talk and ran through our deck and demonstrations, only to realize that - in the interim weeks since everything was originally prepared, the delicate spider's web of configuration required to get Eclipse (SpringSource Tool Suite), Maven, and Android all speaking to each other and working correctly had been... disturbed. We did the talk with a non-Maven build with great success, but it still irked us that we had to switch to a regular Eclipse build so that the talk could proceed. Roy, always intrepid and fearless, has since figured out the right permutations of configurations required to get this all working again and - generous guy that he is - he has documented everything in this blog. Check it out! (I know I did!)
- Tomcat Expert has another practical column on administering and developing with Apache Tomcat 7. The post explains how to take the default security configuration Apache Tomcat 7 to the next level with a bit of background on the configuration options available.
- Roger Hughes introduces how to use JSR 250's
@PreDestroy annotations to replace the use of the corresponding Spring callback interfaces,
- Michal Huniewicz explains how to create a wizard form with Spring MVC.
His solution's certainly one way to solve the problem (and worth a look), but as Spring MVC engineer Rossen Stoyanchev notes in the comments, developers should alternatively consider Spring Web Flow for these types of use cases, as well.
- Yet another great post dissecting one of Spring's oft-misunderstood nuances by Roger Hughes! This post introduces Spring @MVC's
The attribute can be handy when... what am I doing? Go, read the post! It's great!
- Want to run your Spring application on Google App Engine? Want to use their not-quite-there SQL support through Hibernate? Want Hibernate to not be painful? Use Spring. This post shows how to use Spring to setup
HibernateDao on Google App Engine. It sounds like this particular blogger is only using Spring to make the most of Hibernate, which is a shame. Spring runs really nicely on Google App Engine, and so users are encouraged to exploit its full power in that environment, too.
Readers of this column will know that we often try to link to posts about Tomcat administration that are real world. Why? Because Tomcat's powerful and also the most widely used application server for Java developers, and sometimes developers need to blur the lines between developer and system administrator to develop applications in an environment that faithfully replicates production.
This week's link, on load balancing with Apache Tomcat by fronting it with Apache HTTPD, is no different. Great introduction, and a great topic.
At this point, however, I would be remiss if I didn't mention that the easiest way to get this exact behavior with no configuration at all is to use Cloud Foundry, the open source PaaS project. Simply deploy your application to Cloud Foundry and then ratchet up the number of instances of that application. You'll instantly get round robin dispatching among the deployed instances. This is quick and easy, in development or in production! Just sayin'...!
- Ashish Sarin, as readers of this column will know, really digs Spring Roo. He's just announced a Spring Roo podcast, and I couldn't be happier.
I'll certainly be checking it out, and you should too. Here's the announcement with details.
- Chad Lung has put together a great introduction on how to build a Spring-Data project with MongoDB in under 5 minutes using Netbeans 7 and Maven. Spring makes it easy, no matter which build tool and IDE you're using, of course, but it's nice to have specific goals in mind when approaching this sort of integration, and this post is nothing if not specific! Read on!
- The United States Navy used Magnolia, the CMS, along with Spring to build their Navy.com portal and landing page. The web site is - among other things - the focal point of a high volume recruitment campaign here in the US.
Magnolia's putting on a webinar that explains "how Campbell Ewald (Navy's digital agency) used Magnolia's Blossom module for straightforward app integration and how Blossom enabled Spring developers to work efficiently with Magnolia CMS right from the start."
This could be interesting indeed. To learn more, check out the webinar registration page.
Using vCloud Director (VMware's turnkey IaaS solution)? Want to publish notifications about system state using AMQP (and RabbitMQ)? Read this post. 'Nuff said.
Wow! Last week's SpringOne 2GX event was sensational. It was an amazing time, and it was - as usual - great to see the Spring community going so strong. I can't wait until the videos from the event start to appear on InfoQ.com.
We've got a lot to cover this week, though, so let's get into it!
Don't tell anyone, but even if you missed SpringOne 2GX, the decks for all the talks should be on
SpringOne2GX.com, and the videos for all the talks will be on InfoQ.com soon.
To tide you over in the short term, the deck from
SpringSource CTO Adrian Colyer's keynote - "Spring yesterday, today, and tomorrow" - is available online. Thanks Adrian!
One of the many big announcements that came from the SpringOne2GX event was that of Neo4j 2.0.
If you're curious to learn more about how Spring (through the Spring Data Neo4j project) can work with Neo4J, check out this page.
- Eugene also wrote a three part(!!) series on
building a RESTful web service with Spring 3.1 and Java configuration! Here's part 1, on bootstrapping a web application with Java configuration, and part 2, on building a RESTful web service with Spring and part 3, on securing the web application. Great job, Eugene!
At SpringOne 2GX just last week, two different people approached me about their use cases for multi-tenancy with Spring and Hibernate.
Ken DeLong, who I met last week, has written a blog post on the strategy he took and was kind enough to share with us. Nice job, Ken, and thanks!
- At the JAX London Spring track today, Eberhard Wolff gave an interesting talk on using Spring with Scala, and posted the slides. Good stuff and a welcome entry in the ever growing number of use cases for Spring and Scala.
- Johnny Ren has posted a high level overview (no code-level specifics) of the steps to securing a web application using Spring Security over on the JBoss blogs, in
Understanding Spring Security and Role Based Access Control. I think this is useful because it points out some of what's possible with Spring and Spring Security, and you're free from there to pursue the specifics after. Good stuff!
Time after time the Spring source code base has been audited by independant third parties. They review aspects of the code like
code coverage, warnings, etc, and - as often as not - they review how clean the source code itself is. It is, of course, among the cleanest and most reliable code bases in open source. This latest analysis checks the code base for its adherance to GRASP patterns. (I'll spoil the results for you - of course it comes out roses! That doesn't make the analysis any less interesting.)
Check it out!
By the by, for those curious about how the code's stayed so clean and well designed, check out Spring project lead's interview on the Software Engineering podcast a few years ago, in which he details his approach to keeping code organized and to evolving it.
There are lots of goodies in Spring 3.1, but one that has received a lot of attention is the updated testing support. Testing's an important part to
enterprise software development, and Spring's always made this important task as easy as possible. Check out the Java Code Geek's blog on Spring 3 Testing with JUnit 4 with
- Want to install Tomcat 7 and Solr on Centos 5.5? Look no further than this writeup.
- Cobalto Labs has just announced the first release of their first version of the
Scala Primavera project, which aims to bring the Scala language's expressiveness to Spring.
Check it out, fellow Spring-loving Scala-heads!
- This blog post introduces how
how to translate exceptions using Spring Roo. It's a great post, and - more to the point - it looks like there will be even more coming! I'll be happy to see even more. Nice job, Goldstift!
We are live from SpringOne! 'Nuff said! If you're here, enjoy!
If you're not, you're missing out! Take heart, though, you still have
this roundup to look forward to and many of the sessions will be recorded by InfoQ.
So, with that, let's get to it! Look forward to seeing you next week!
- Michael Hunger announced that
Spring Data Neo4J 2.0.0.M1 Has Been Releeased!
The new release has several new features, and has been divided into smaller submodules.
Neo4jTemplate for easy, copying object-graph-mapping, and Spring Data Repositories using persistence entity meta information
spring-data-neo4j-aspects: transparent object-graph-mapping using AspectJ
spring-data-neo4j-cross-store: AspectJ based cross-store-persistence between JPA and Neo4j
spring-data-neo4j-rest: transparent access of a remote Neo4j REST-Server
- Costin Leau
has announced that
Spring Data Redis 1.0.0.RC1 has been released.
The new release upgrades to Spring 3.1 RC1, improves JDK 5 compatibility, and
improves Spring 3.1 cache abstraction on top of Redis
Thomas Risberg has announced that Spring Data MongoDB 1.0.0.M5 Has Been Released. Spring Data MongoDB provides a convenient
integration with Spring and the MongoDB,
including support for polyglot persistence, a
MongoTemplate, and much more.
Filip Hanik has started a series of blogs on getting started with Apache Tomcat.
- Gordon Dickens chimes in with another epic post, this one on unit testing with Spring and Mockito and PowerMock. Nice job, Gordon!
Using jQuery? Using Spring MVC (Naturally!)? Want to build on a jQuery UI that does auto complete? Check out
Michal Huniewicz's post introducing the topic!
Ashish Sarin (author of the Spring Roo Cookbook) has put up his presentation given at the Hyderabad Silicon India conference. The presentation focuses on Spring Roo and is a good introduction for the unitiated.
Continuing the common thread of unit testing with Spring this week, Alex Soto chimes in
with a post on Mockito and the StaticApplicationContext to improve mocking
John Dobie talks about testing RESTful web services with Maven.
- Ken Rimple is at it again, this time with a quick post on how to get the latest bits of Spring Roo to support addon development.
What a week! If you're an enterprise Java developer, then you've no doubt heard the news - Spring 3.1 RC1 has just been released! Read on for more details and be sure to sound off on the forums if you have questions or feedback!
And, of course, if you're at SpringOne2GX 2011 next week, you can look forward to hearing a lot more on Spring 3.1 as well as the latest and greatest from all the Spring technologies.
We look forward to seeing you all there!
- Spring 3.1.0.RC1 was released last week! And so begins the march to Spring 3.1 GA. Chris Beams kicked things off with this
announcement. Then, Juergen Hoeller, Spring project lead, followed up with this blog post detailing the new features.
The first release candidate of Spring 3.1 is now available from the Spring milestone repository or for direct download via community download page. This release includes new features such as:
Support for Hibernate 4.0 (up to date with 4.0 CR4),
TestContext framework support for
Flash scope for Spring MVC,
Support for Quartz 2.0,
77 bug fixes, 16 new features, and 66 improvements. Wow! To learn more about what's new in Spring 3.1, be sure to check out this document.
Martin Lippert today announced the release of SpringSource Tool Suite 2.8. The new IDE contains all sorts of features, and updates. It's built on top of Eclipse Indigo SR1, it
includes full IDE support for Java 7 (coming with the Eclipse 3.7.1 update),
support for Spring 3.1 bean profiles, including validation and navigation,
support for Spring 3.1 c-namespace including quick-fixes, validation and content-assist,
improved constructor-arg validation and quick-fixes,
updated Eclipse Maven integration (m2e 1.0.100), including migration assistance,
support for Groovy 1.8.2, and
support for Grails 2.0.0.M2. As this new release bundles m2e (the Eclipse plugin formerly known as m2eclipse), there are some steps you'll need to be aware of when upgrading.
As usual, visit the community download page to get the latest bits.
Spring Integration 2.1 M2 Has Been Released. It includes numerous fixes and new features, including a refactored (simpler and more flexible) aggregator and resequencer,
an XPath filter,
JDBC stored procedure adapters, and
AMQP-backed Message Channels. Be sure to get the bits from the community download page.
Readers of this column will remember that InfoQ recorded sessions from the Paris "What's Next," and we got to see Adrian Colyer's keynote on cloud computing in the enterprise. InfoQ's just released two more videos from Rob Harrop, a core Spring developer and an engineer on RabbitMQ, and Jags Ramnarayan, chief architect at GemFire. Rob introduced polyglot messaging with RabbitMQ, and Jags Ramnaraya introduced SQLFire, the scalable SQL database that offers a compelling alternative to a NOSQL store.
- Chris Harris, of the RabbitMQ team, has just published a great post demonstrating how to use MongoDB's continuous query mechanism with RabbitMQ. Great stuff from a great author. Readers that wish to learn more about RabbitMQ, the open source messaging broker from SpringSource, should check out this webinar from the SpringSourceDev YouTube channel.
- Ramnivas Laddad, from the CloudFoundry team, introduces the numerous services available on CloudFoundry for Spring developers.
Services offered in Cloud Foundry make writing efficient and effective applications possible. When you're writing an application for CloudFoundry, don't worry about whether there's a service available - instead focus on which service you'll use.
- This new post introduces one of the more intriguing tricks you can play with the Spring application context: Spring: Make an Externally Created Object Available to Beans in applicationContext.xml If your Spring beans need access to an object that is not created by Spring itself, you can "inject" it into the context by using a static parent context and registering the object with it. Beans can then reference it just as if it was defined in the application context file.
- Micro Cloud Foundry has been updated, and now offers more supported services - including RabbitMQ and PostgreSQL support - which is identical to the publicly hosted CloudFoundry.com
This post introduces some of the changes in the update. If you're a Spring developer, consult this video on getting started with the Micro Cloud Foundry.
Spring Data JDBC Extensions with Oracle Database Support 1.0.0.RC1 has just been released. Among the many improvements, there is better documentation chapter for QueryDSL SQL module,
OSGi manifests, and updated slf4j/log4j and other dependencies.
- Spring's Message Listener container has been, and remains, one of the most powerful ways to build JMS applications. In order to receive JMS messages, Spring provides the concept of message listener containers. These are beans that can be configured to receive messages that arrive on specified
javax.jms.Destinations asynchronously - that is, you don't wait for the messages.
This post does a fine job introducing the concepts and configuration required to have your application notified when a message is received from a JMS broker.
- Ken Rimple, co-author of Manning's "Spring Roo in Action," M
writes about all the great changes in Spring Roo 1.2. As he notes in the article, some break things and some are great. Either way, these are all in-flight changes and are subject to change. There's a reason why working off of trunk is called living on the edge! Check it out!
- Sergi Almar is putting together "Spring puzzles" - little trivia questions related to Spring. I thought these were pretty fun. Do you know the answers? Here's the first puzzle, and here's the second, published just last week. Nice job, Sergi!
- Stuck on JBoss AS but want things to be a bit more comfortable for your Spring applications? JBoss has just released version 2.0 of their Spring-JBoss integration library, SnowDrop.
- And of course, I'm sure that you noticed, we have spruced up the SpringSource.org website a little. Everything is in the same place it always was so all your bookmarks and feeds still work, but we have rearranged some of the structure to make it easier to find the things you need. We hope you like it and if you have any feedback or comments start a thread on the Meta forum.
Where has the time gone? Honestly! It seems like we just started this merry little adventure into 2011. I was still recuperating from the explosion of great content and ideas that was SpringOne 2010. Heck, we had SpringOne 2010 videos on InfoQ well into this year!
And yet time marches on, and here we are, staring down the barrel of SpringOne2GX 2011 in just a few weeks! If you haven't already registered, do! If you have registered, bring your thinking caps (or, helmets). This year's going to be insane. Even if I could tell you more, we've got a lot content to go over! So, with that...
- Are you, like the throngs of people who descended on the SpringSource booth last week at JavaOne, curious about the CloudFoundry project? The CloudFoundry team has put together this video demonstrating how to use CloudFoundry from the SpringSource Tool Suite and from Ruby. Check it out for a whirlwind tour of CloudFoundry.
- Apache Tomcat engineer Mark Thomas introduces the Servlet 3 support for "fragments" in Apache Tomcat 7. Cool stuff, and the example's on-point for the imminent Spring 3.1 release. Good stuff, Mark!
- The Java Code Geeks introduce Spring Insight, the powerful agent that lives in the tc Server Developer Edition. For a great, in depth look at Spring Insight, check out this post.
- The Spring Social project's taken on a life of its own! It seems like every week there's a new implementation that's being built on top of the powerful, foundational connection and autorization APIs that Spring Social provides.
Google+, the new social network from Google, is an oft-demanded integration. Unfortunately, there was no API available until just recently. In what seems like minutes after the announcement, Bozhidar Bozhanov had rushed in to provide a Spring Social API for Google+. Nice job, Bozhidar! If you want to get started with Spring Social, be sure to check out Spring Social lead Craig Walls' webinar recording introducing Spring Social.
- BSB has written a bit about how to
use Spring Batch to handle staging of data in a batch job. It introduces the core SPIs,
ItemProcessor, and then shows how to seed a batch job using a
StagingItemProcessor. Good stuff! This is another example of how the strong reliance on flexible SPIs make Spring extensible to new use cases that weren't envisioned in the original design. Nice job, guys!
- Sivaprasadreddy Katamreddy
demonstrates how to go beyond the built-in Spring support for Quartz, the popular open source job scheduling engine, and leverage annotations to drive the registration and configuration of new Quartz jobs.
This post is doubly useful: it makes the Spring and Quartz integration as smooth as silk, on par with the inbuilt support for scheduling with Spring's own
@Scheduled annotation, and it shows how - with a little bit of coding, you can leverage Spring's fantastic component model and rich SPIs to extend the framework and build micro-frameworks.
- Your humble editor was recently asked about good content to get started with Neo4J, the graph database, and Spring Data Graph, the Spring Data integration for Neo4J. I answered the question, but decided it might be helpful for others. Check out this little listing of useful links to learn Neo4J and Spring Data Graph.
- Alex Soto builds a Yaml
HttpMessageConverter. Yaml (short for "Yet another markup language") provides a human-readable and writable representation of data (like JSON, but even simpler). Yaml is a natural choice for REST services, because it's so easy to interact with. The
HttpMessageConverter SPI, in Spring's web support, is used to drive how Spring marshals an object over an HTTP request (or response) and vice-vera, from an object into some type of payload that can be encoaded in an HTTP request (or response).
- Ashish Sarin, author of the Spring Roo 1.1 Cookbook from PACKT, has written up an introduction to the AspectJ inter-type declaration (ITD) language. This is not required reading if you're using Spring Roo, but it is very cool to see what's possible, and having such an able introduction's very helpful!
- Chad Lung provides a useful recipe for setting up Tomcat authentication using the
DataSourceRealm on CentOS 6 and MySQL. There's nothing Spring-specific to this post, but it's a useful recipe if you're using Apache Tomcat!
- Alex Soto is at it again! This time, he introduces REST, the architectual concept, and then backs it up with a concreate example using Spring MVC.
- Roger Hughes introduces Spring's @Required annotation. His post explores a not only how to use the annotation, but when. It is a compelling read for one of Spring's most powerful gems, and best kept secrets. Nice job, Roger!
- Roger Hughes introduces Spring's AOP support, particularly, the
@AfterThrowing annotation, which lets you intercept a method invocation just after an exception's been thrown but before it's been handled. Fascinating read, and a nice reminder of the power that bubbles just beneath the surface of the framework.
What a crazy week! JavaOne is underway, and the SpringSource / CloudFoundry booth has been the hub of activity on the showroom floor. To all those who we've talked
to, the relevant links include the open source code for CloudFoundry, the SpringSource blog, and of course the blog introducing the MicroCloud Foundry for Spring Developers and, generally, the Youtube SpringSource channel.
Lots of content, so let's get to it!
- Did you miss last week's excellent webinar by Craig Walls, lead of the Spring Social project? We rushed the webinar video through production and have it available for you to watch on SpringSource's Youtube channel.
- A new video by Ben Corrie introduces the challenges of memory management with virtualization and Java, along with an introduction to the answer. Apparently this is the first in a series of presentations on this topic so I'm really looking forward to learning more.
- The new Apache Tomcat 7.0.22 release includes bug fixes and new features compared to version 7.0.21 including:
- Further improvements to the memory leak detection and prevention features.
- Fix issue that prevented using SSL with the HTTP BIO connector and Java 7
- Add support for controlling which session attributes are replicated when using session replication (a.k.a clustering).
John Ferguson blogs about using Spring dependencies in your acceptance tests with Thucydides. From the article, "Spring provides excellent support for integration tests, via the SpringJUnit4ClassRunner test runner. Unfortunately, if you are using Thucydides, this is not an option, as a test cannot have two runners at the same time. Fortunately, however, there is a solution!"
Roger Hughes takes a look at
using Spring Interceptors in your Spring MVC web application.
- Bozhidar Bozhanov introduces a solution to Hibernate listeners that are managed by Spring.
- This blog post by Alex Soto introduces the claim-check pattern with Spring Integration and MongoDB. Good stuff!
Ashish Sarin, author of the Spring Roo 1.1 Cookbook from PAKT,
talks about tips for how to get the most out of the Spring Roo development tool.
Ashish Sarin also introduces how to do Spring MVC scaffolding with Spring Roo.
What a week! Lots of content and so precious little time, so we'll get right into it. First, some programming notes: SpringSource will be at JavaOne. If you're there, then be sure to visit the SpringSource booth in the exhibitors hall and say hi and meet-'n-greet with engineers from SpringSource, yours truly included. Likewise, there is a lot of fine content from the SpringSource team at JavaOne itself, so make sure to add them to your schedule!
Finally, what're you guys doing Thursday morning? Say around 10 AM PST in North America, or 3 PM GMT in Europe? Well, if you're not busy, let's have a social get together! Just you, me, Craig Walls, and several thousand of our closest friends. Craig Walls is putting on a webinar introducing Spring Social.
This webinar will introduce Spring Social essentials such as connecting to service providers and using Spring Social's API bindings. We'll also see how to add provider-based sign in and how to extend Spring Social's service provider support. RSVP ASAP!
- Gunnar Hillert, resident nice guy and integration expert, has put together a blog explaining how to
use the new CloudFoundry Maven plugin to deploy applications as part of the build.
Um.. so what are you still reading this for? That's really cool, go check it out! We'll wait...
- SpringSource Tool Suite 2.8.0.M2 Released! The new release has lots of features, including Spring 3.1 support, c-namespace content-assist, quick-fix and validation, an update to the new m2e plugin (which is the plugin formerly-known-as-Pri...sorry, wrong one, it's the plugin-formerly-known-as-m2eclipse), and much more.
- Spring GemFire 1.1.0.M3 Released The new release features improved support for indicies, as well as improved region creation. Check it out!
- This video provides a live coding introduction to the Spring Data JPA project by Oliver Gierke. Spring JPA aims to significantly improve the implementation of data access layers by reducing the effort to the amount that's actually needed.
- This post explains how to create type-safe queries with MongoDB and QueryDSL.
- Steve Harris explains how to use Ehcache Project's Spring annotations to handle declarative caching with Ehcache. This is a nice post, complete with sample code. NB: these annotations refer to the Ehcache specific annotations, and not to the generic Spring Cache abstraction present in the imminent Spring 3.1 release. Good stuff, but going forward, you might consider using the more generic abstraction in Spring core.
- Using Spring Social? Using Google+? Of course you are. And, so are many others. To fill the gap, the community's put together an initial integration at a Google+ API Spring Social API.
To learn more, check out this post on a project to provide Spring Social integration with Google's APIs, starting with Google+ and Google Contacts.
- Ashish Sarin has written a post on how to create JPA entities with Spring Roo. Nice post! Ashish, as you no doubt know, is the author of Packt publishing's Spring Roo 1.1 Cookbook, which is an interesting read.
- Faithful readers of this roundup will no doubt know the name Gordon Dickens, who has come in this week with not one, but two posts on using Spring in the cloud this week.
The first post introduces using Spring Roo with CloudFoundry. Very cool!
The second post talks about using Spring Roo with CloudBees, an alternative cloud.
Spring (and the projects that build on it like Grails and Spring Roo) has always had a strong portability story, and this just exemplifies that feature. Now, if you want to take your application further, and want portability, then definitely consider CloudFoundry as your PaaS choice. Remember, portability matters!
- Using SpringSource Tool Suite?
One of my favorite features are the template projects, which provide ready-to-use, pre-configured starter projects. To access them, you go to File > New > Spring Template Project, and then choose one. There are lots to choose from - Spring Batch Admin, Spring MVC, etc.
However, one of the most popular is sure to be the Spring MVC template, which comes with a ready-to-use Maven
pom.xml that is, well, perhaps a bit overloaded!
This blog post disects that template's
pom.xml, providing guidance for developers who want to know which parts of the
pom.xml are optional, and what they do. Good stuff! And, I think some of the feedback can be incorporated into the templates in future iterations of STS ;-)
- This post introduces AOP and AspectJ terminology which can be very useful if you're looking to Spring's AOP support for the first time. Good stuff!
- This post, Getting started with Spring Integration v2 and Enterprise Integration Patterns - A Simple Example using File and Mail Adapters explains... well... how to get started with Spring Integration, version 2.0, using the file and mail adapters. Nice work!
- Ashish is at it again this week, this time with a post on how to setup a simple project using Spring Roo. Good stuff, and always helpful for the stalwart Roo developer...
- Swapping Out Spring Bean Configuration at Runtime
- This admittedly very introductory post explains how to use Netbeans 7, Maven and the Spring Framework.