Category Archives: springone

SpringOne – Days 1 and 2

I finally found some time to post updates. Whew! It has been busy!

Day 1
On Monday, I hooked up with the SpringSource guys. It seems everyone had something to work on. I wanted to get 0.9.0 completed and working before giving my demo of PetClinic on Thursday. Just about anyone I spoke to was polishing up their slides. It is truly fantastic to be chatting with the guys at SpringSource.

Rod Johnson gave the keynote addresss, focusing on the target goal of SpringSource in reducing the complexity of application development. Complexity means more development, more risk, and in turn, more cost. SpringSource’s overarching goal of reducing complexity must be working, because he had several metrics showing how much has been adopted in some degree by the industry.

After the keynote, I was finally able to meet up with Keith Donald. We have been playing email tag for some time, and I was surprised to find out his office is probably 10 minutes away from mine. Hopefully we can get together soon after the conference. It was also great to meet Mark Pollack, Chris Beams, Ben Alex, and of course, Rod Johnson himself. While I enjoy reading their blog entries and source code, there is no substitute for meeting the real person.

Day 2
In the morning, I attended the Grail presentation. That was awesome. Graeme demonstrated building a twitter-like site using Grails in 40 minutes. Okay, he promised 40 minutes, and took 45 minutes, but only because he started adding extra functionality not found at the actual twitter site. In the process, I was realizing the value Grails places on plugins. Grails is good at creating a skeleton application, and then letting you flesh it out. I was starting to get the idea that Spring Python could use a command line utility with plugins to generate a skeleton CherryPy app, Django app, or anything else developed by a plugin. Well, I went to the next session, “Intro to Spring Security 2.5”, opened my laptop, and started coding. I managed to write a static skeleton app, and then began working on a command-line utility to dynamically generate this. That is still in progress.

I admit I was only listening with one ear to Ben’s presentation. Sorry Ben! 1) I am already somewhat familiar with Spring Security, 2) most of it is geared towards web apps which I don’t write, and 3) I was really stoked at the idea of a command-line tool that download Spring Python plugins from a network location. I did catch his question, “who here is NOT writing web apps?” I was the only person in the room who raised a hand to that. When asked what I was using, I answered “Swing desktop apps.” That plugged Ben’s point that Spring Security uses the same tactics.

After lunch, I attend two sessions about Spring Integration. This is channel based messaging, which is sort of like JMS on steroids in my book. They interface with JMS, but also with other things like file-based systems, web services, RMI, anything. And it is easy to plug in your non-message based service to a chain of processing. This is wiring your app in a different, more decoupled way. I sure could have used this about five years ago.

Later that evening, Russ and I got together to work on his Spring Extensions presentation. Russ is planning to talk about the process Spring has set up to better manage new code, and wanted to compare the process with real life, and Spring Python is his choice target. If you are at SpringOne and can read this before Thursday, I highly suggest you attend that presentation. It will definitely be entertaining (shameless plug).

Welcome to SpringOne

Day 0
Well, I’m happy to report I got in last night and was able to meet up with a handful of people. Russ texted me to join them at the bar. After getting settled in the nice Westin Diplomat, I managed to find him along with a few others, despite my phone not having international support. Since the conference doesn’t start until Monday evening, I call this Day 0. Russ and I made followup plans. Previously, we were scheduled to speak in parallel during the same time slot, but that now we are scheduled serially. That is definitely a relief. Russ is giving his presentation on Spring Extensions before my Introduction to Spring Python, and there is some possibility of me providing a little “live” feedback during his presentation. We need to hammer out what that is exactly.

I spent time getting my laptop together this past weekend before traveling down here so that I can give a demo of PetClinic. I wanted to be sure I had a copy of the trunk checked out with the handful of Spring Python’s dependencies installed so I could run the regression test suite as well as PetClinic. It is all working, and now I can comfortably make this blog entry from my hotel room. Stay tuned!

Spring Python 0.9.0 is released

Spring Python is not a web framework, but instead a library of tools that can empower any python application, whether web-based, desktop, or server side utility. For more details, read the list of features below and visit the website at

Spring Python has just released 0.9.0. This release includes a key update to module, where authorization has been patched to support CherryPy 3.1. Sylvain helped by providing key patches to integrate Spring Wiki with CherryPy 3.1, and I adapted these to support the PetClinic app. This valuable feature will help demonstrate all the various features of Spring Python during the “Introduction to Spring Python” demo scheduled later this week during the SpringOne conference.
Release Notes – Spring Python – Version 0.9




* For more information, please visit the website at

* To download the 0.9.0 release, or an archived release, and for access to sample applications use

Key Features of Spring Python include:

* Inversion Of Control – The idea is to decouple two classes at the interface level. This lets you build many reusable parts in your software, and your whole application becomes more pluggable. You can use either the XmlApplicationContext or the DecoratorBasedApplicationContext.

* Aspect-oriented Programming – Spring Python provides great ways to wrap advice around objects. It is utilized for remoting. Another use is for debug tracers and performance tracing.

* DatabaseTemplate – Reading from the database requires a monotonous cycle of opening cursors, reading rows, and closing cursors, along with exception handlers. With this template class, all you need is the SQL query and row-handling function. Spring Python does the rest.

* Database Transactions – Wrapping multiple database calls with transactions can make your code hard to read. This module provides multiple ways to define transactions without making things complicated.

* Security – Plugin security interceptors to lock down access to your methods, utilizing both authentication and domain authorization.

* Remoting – It is easy to convert your local application into a distributed one. If you have already built your client and server pieces using the IoC container, then going from local to distributed is just a configuration change.

* Samples – to help demonstrate various features of Spring Python, some sample applications have been created:
o PetClinic – Everybody’s favorite Spring sample application has been rebuilt from the ground up using various web containers including: CherryPy. Go check it out for an example of how to use this framework.

o Spring Wiki – Wikis are powerful ways to store and manage content, so we created a simple one as a demo!
o Spring Bot – Use Spring Python to build a tiny bot to manage the IRC channel of your open source project.