Spring Live


Spring Live - The Final Update

After 3 years of working on Spring Live, the journey is finally over. You can read more about it at in this press release and on Matt Filios' blog.

I started this blog on February 17, 2004 and started writing Spring Live a couple months later. In an interview on TSS, I admitted I didn't know anything about Spring when I started writing the book. Based on the book's Amazon ranking, that didn't prevent it from being a good book. It turned into a result of my thoughts and experiences while learning the Spring Framework from 2004 to 2006. During that time, I made more than 10 updates. The final update (available since the beginning of May) is from edits I did in July of last year. The tech and copy editing process carried into the fall, and with the help of Scott Nicholls and Sarah Hogan, I think you'll find this is the best version of Spring Live yet. I wish I could say that this book has been updated for Spring 2.0, but it hasn't. The last 3 chapters in the book use Spring 2.0 in its examples, but that's about it.

While I was writing this book, a lot of things happened to me. I traveled to Norway, became a father for the second time, and traveled to many conferences to talk about Spring. The whole experience was quite a ride. Thanks to SourceBeat for the opportunity to write this book and to the creators and maintainers of the Spring Framework for making it all possible. Last, but certainly not least, thanks to all the readers to buying this book, submitting bugs and making it what it is today.

Unlike traditional books, Spring Live has changed, grown, and become better over the past two years. Although the 1.0 version was fun to write, the updates to this book were more exciting. Together, we acted as a team to produce an in-depth, pragmatic, and interesting book about the Spring Framework. As you provided feedback, I improved existing content in the book and added new content that you said interested you. This book is yours as much as it is mine.

To download this latest release, please visit http://springlive.com. You can read the release notes to see what's changed since the last release.

This blog will continue to exist, but is unlikely to be updated. If you post comments here, I'll try to answer them, but you might have better luck posting to the Spring Live Forum. You can check out my other blog for updates on my life, the technologies I use, and other fun stuff. Thanks for everything folks, it really was a great experience!

Spring and OSGi

Costin Leau has a nice write-up on the new Spring-OSGi release: So what's the deal with Spring-OSGi? In this blog entry, Costin does a great job of explaining how to export and consume OSGi Services with Spring, as well as how to easily test them with AbstractOsgiTests and friends. Good stuff Costin - thanks for the easy-to-follow examples.

Dependency Injection Demystified

James Shore has a short-n-sweet definition of dependency injection.

Dependency injection means giving an object its instance variables. Really. That's it.

If you're not using dependency injection in your projects, it's a good read. As far as using a framework like Spring, that's secondary to the whole concept of DI.


The Spring Experience 2006 - Day 3

At the final day of The Spring Experience, I learned how to build web applications using Hijax (progressive enhancement with Ajax) and ROO (Real Oriented Objects). Both were excellent presentations - you can read my summaries by clicking on the links below:

Ben Alex's ROO implementation has some resemblence to the XT Modeling framework from the Spring Modules project. However, I think ROO relies on a lot more code-generation than XT does. Maybe they should combine forces?


The Spring Experience - Day 2

Today was another great day at The Spring Experience. I attended sessions on Grails, OSGi and the future of Spring. Please see the links below for detailed summaries of these sessions.

In addition to these talks, I did my own on What's New in AppFuse 2.0 (PDF). Since most folks that attended this talk were familiar with AppFuse, I ditched my presentation and did live coding the whole time. Some folks were hesitant about the Maven 2 transition, but I fed them free beer and they seemed to be happy. The good news for those that prefer the current Ant approach is we do plan on continuing to support version 1.9.x, but it's unlikely we'll upgrade it for JDK 5.

One funny part of my presentation is when I tried to show them how well NetBeans 5.5 works with Maven (using the Mevenide2 plugin). After loading the project and pressing "play" to launch the app in Tomcat, it took over 5 minutes to build, deploy and load. Maybe NetBeans + Mevenide isn't a good solution for AppFuse 2.0 users after all. ;-)


The Spring Experience 2006 - Day 1

I'm attending The Spring Experience in Hollywood, Florida this week. Here's a list of blog posts from the sessions I attended today.

The last post also has an entry on the next Spring Live update:

I recently updated Spring Live's Chapter 13 for SWF 1.0, but Expert Spring MVC and Web Flow (by Seth Ladd, Darren Davison, Steven Devijver and Colin Yates) is much better than my 10-page example. My updated chapter is currently in tech edit, so you may have to wait another couple weeks before it's in a released version.


Cool features in Spring 2.0: The "p" namespace and JavaConfig

Rod Johnson has blogged twice on the Interface21 Team Blog in the last week. With the interesting blogs he's been posting, it's a wonder he doesn't write more. Click on the links below to learn about some cool features in Spring 2.0:

Craig Walls also has some comments on the "p" namespace and the Java configuration option. I don't know how I feel about the "p" namespace, but I'll be asking AppFuse users what they think over the next week. In addition, I'll be watching the Java configuration project closely - this might be a good way to eliminate Spring's XML in AppFuse 2.2. You might notice on the AppFuse Roadmap that we hope to eliminate the need to write XML in this release (in favor of Convention over Configuration).

As far as blogging The Spring Experience next week, I'll do it if the sessions/speakers inspire me to do so. ;-)


How do you get open source frameworks past the red tape?

From an e-mail I received earlier this month, with a subject of "Acceptance red tape":

After requesting permission to use the Spring Framework for the business logic and data access layers of an application, how do you fight something like this? Spring is not an approved Framework for the ********** environment. We understand the benefits of the framework. However, we have not certified it in our environment. Additionally, we have concerns that this framework will not gain long standing traction among the J2EE community. We would like to reduce the number of frameworks used in our environment, and do not want to be left with "legacy" frameworks that have little acceptance or support as is the case with the pico container.

Read more on raibledesigns.com...


Spring Live Status

I updated Chapters 8 - 13 + Appendix A in July and it's been in tech and copy edit ever since. Currently, we're editing Chapters 12 and 13, so we're close to a release - hopefully sometime in December. Unfortunately, since I updated it in July, these updates don't cover Spring 2.0. Maintaining a book for 2.5 years certainly isn't easy.

Spring Web Flow 1.0 Released

Coverage is on the Spring Web Flow site and on Craig's blog.

Download | Documentation | Changelog | Upgrade Guide (PDF)

Ten sample applications ship with the release, each demonstrating a distinct set of features. The samples are:
  1. Phonebook - the original sample demonstrating most features (including subflows)
  2. Sellitem - demonstrates a wizard with conditional transitions, flow execution redirects, custom text field formatting, and continuations
  3. Flowlauncher - demonstrates all the possible ways to launch and resume flows
  4. Itemlist - demonstrates REST-style URLs and inline flows
  5. Shippingrate - demonstrates Spring Web Flow together with Ajax technology
  6. NumberGuess - demonstrates stateful beans, evaluate actions, and "single key" flow execution redirects.
  7. Birthdate - demonstrates Struts integration
  8. Fileupload - demonstrates multipart file upload, set actions, and flash scope
  9. Phonebook-Portlet - the phonebook sample in a Portlet environment (notice how the flow definitions do not change)
  10. Sellitem-JSF - the sellitem sample in a JSF environment

Congratulations to everyone involved in this release - especially the new parents! We'll be celebrating this release at the Spring BOF in Keystone tonight. Follow that with an Eclipse birthday party and it should be a good night. For fellow conference attendees, I've managed to secure beer for the BOF. ;-)


Spring Web Flow 1.0 RC4 and Acegi Security 1.0.2

Spring Web Flow 1.0 RC4 was released today. I talked with Keith Donald and he pointed out a nifty new feature:

Note the new flash scope (which is like the Rails concept but a little more as attributes in flash stay in scope past the redirect and *any subsequent view refreshes* *until* the next user event is signaled (e.g. "submit")... [ideal for success messages and validation errors]

Other cool features include default POST+REDIRECT+GET behavior with no special coding and simplified XML configuration thanks to Spring 2.0 and its XSD support. I'm working on a project with JSF right now, and SWF might a nice solution for simplifying some page flows. Spring Web Flow 1.0 Final is currently scheduled to be released next week. In my "example programming" with SWF, I haven't seen any issues, but AppFuse Developer Sanjiv warns that SWF doesn't support long lived Hibernate sessions.

In other news, Acegi Security 1.0.2 was released yesterday. If you're using the LogoutFilter from 1.0+, you should checkout SEC-340. Basically, the functionality of the default logout handler has changed so the session is now invalidated.

Finally, I'll close this post with a good Acegi tip. Rather than having several filter-mappings in web.xml for your Acegi filter, you can prevent certain URLs from being filtered in your Acegi context file. Just use something like /images/*=#NONE# in your filterInvocationDefinitionSource property. Read more about this feature on the Acegi developers mailing list.


Spring 2.0 Released

From the Spring mailing lists:

Dear Spring community,

I'm pleased to announce that, after 5 milestone releases and 4 release candidates over the course of 9 months, Spring 2.0 has gone final today.

Note that the website is currently down because of too much load. We would appreciate if you look at it a bit later :-)

Here are the direct download links at SourceForge.

Thanks to everybody for the invaluable feedback that went into this release! Spring wouldn't be where it is today without your contributions.

FYI, we plan to do a 1.2.9 maintenance release in mid October. Furthermore, Spring 2.0.x maintenance releases are scheduled in a rhythm of 4 to 6 weeks.



Modified for HTML-friendliness.

If you're looking for code-samples for Spring 2.0, there's a lot of presentations available from Spring Forward 2006. Of course, there's also Thomas and I's Spring 2.0 Kickstart project. I hope to upgrade AppFuse and Equinox to use Spring 2.0 in the next week or so.


Spring Forward 2006 - The Keynote

After a 1 and a 1/2 hour cab ride, I arrived at Spring Foward 2006 just in time for the opening keynote. It looks like I'll be doing a 2nd talk this afternoon as Clark Richey was unable to make the show. I was given a choice of talks, and I chose "Comparing Web Frameworks" because that's a fun talk to do.

Continue reading on raibledesigns.com »

Spring is moving to Maven 2

Interesting news - it looks like Spring is moving to Maven 2 in the near future. This is good news for all Maven users as this move will likely result cleaner POMs in Maven's repo. Since Spring touches so many projects, they won't have a choice if they want to make Maven useable.

The good thing is the central repo has become much better in the last 6 months, so hopefully their transition won't be too bad. When I first integrated Maven 2 in Equinox, I ended up filing over 40 bugs for invalid POMs. When I integrated it into AppFuse, there were hardly any. Thanks to the Maven developers (and users) for their excellent repo cleanup work.

Semi-major change in Spring 2.0 RC4

Just an FYI... it looks like there's a semi-major change in the next (2.0 RC4) release. Instead of using:


You'll need to use:


...for all of your XSD schema references. Of course, this is easy to update in code, but difficult to update in documentation and course materials (when you've already printed them). Looks like the Spring course and labs I'll be delivering this week will be out of date before they're even used!

Oh well, hopefully no one is writing a Spring 2.0 book that's at the printers right now. ;-)


« May 2015

Valid XHTML or CSS?

[This is a Roller site]
Theme by Rowell Sotto.
© Matt Raible