And many many more ...
Spring 3.0 offers a variety of other new features that are outside of the focus of this article: One example is Portlet 2.0 support, which affects the Spring Portlet MVC framework that already comprehensively supports portlet web development.
Web conversations are also planned to be supported. These are scopes for variables in web applications that survive several requests, for example when taking a customer order. The complexity of such processes often requires them to be distributed across several web pages. The problem with this is that the data cannot be saved within the HTTP session, because then only one process at a time can be handled per user. As each user only has one HTTP session, several parallel processes would overwrite each others' data. A conversation offers a data container that has its own visibility, as well as other advantages: for example, the data pertaining to one functional transaction is initially stored within the conversation, to be persisted into the database at a later stage. This allows keeping components like a hibernate session or a JPA EntityManager
open, throughout the entire process, which resolves some of the difficulties encountered with these technologies in web applications. By supporting conversations, Spring takes over functionality that has, so far, only been provided by Spring Web Flow, within the Spring stack. In the future Spring Web Flow will built upon this feature of Spring and add sophisticated support for navigation and JSF components.
In order to support conversations, Spring beans, or at least references to them, must be stored in a HTTP session. This requires them to be serialised, which in many cases simply isn't possible. Therefore, Spring 3.0 offers the option to serialise the references to Spring beans in a way that allows not the referenced Spring beans themselves, but only the respective reference information, to be serialised. When de-serialising, this information is then used to extract the respective Spring bean from the Spring container. This allows references to Spring beans to be serialised that cannot be serialised themselves.