The Spring IoC container and AOP framework is equally at home in a J2SE environment as in a J2EE environment. So are many of the Spring service abstractions because they decouple from the J2EE APIs. This is valuable, as many concepts are far more general than J2EE or server-side applications.
Thus you can use Spring not just in a simple web container such as Tomcat, but in standalone applications or rich clients. Some users even use the basic Spring IoC container in applets.
The Spring Rich Client (RCP) project is the most important initiative in this space. It is a framework for developing Swing-based desktop applications. The Spring RCP project was launched in March 2004 in response to increasing interest in Spring in J2SE environments, and the project lead is Keith Donald, who is also a core Spring developer.
Spring Rich aims to simplify the Swing programming model by building abstractions over low-level Swing APIs; to promote the implementation of well-layered applications, with a clean separation between presentation and business services; and to provide an integration point for diverse UI frameworks. Thus it is fully in keeping with core Spring Framework values.
Spring Rich provides abstractions for managing the lifecycle and configuration of desktop applications, such as windows, editors, and toolbars; a command framework building on Swing's base action support, but adding much more power; a powerful data binding and validation framework; and support libraries for common requirements such as wizards, preferences, progress monitoring, and property sheets.
If you are developing a rich client for a server-side application, or a standalone Swing application, Spring Rich deserves consideration. It adds significant convenience to managing UI elements, and is particularly compelling if you need to access server-side services using remoting, as you have access to the full Spring remoting support.