About Spring
Mission Statement
We believe that:
- J2EE should be easier to use
- It is best to program to interfaces, rather than classes. Spring reduces the complexity cost of using interfaces to zero.
- JavaBeans offer a great way of configuring applications.
- OO design is more important than any implementation technology, such as J2EE.
- Checked exceptions are overused in Java. A platform shouldn't force you to catch exceptions you're unlikely to be able to recover from.
- Testability is essential, and a platform such as Spring should help make your code easier to test.
Our philosophy is summarized in Expert One-on-One J2EE Design and Development by Rod Johnson.
We aim that:
- Spring should be a pleasure to use
- Your application code should not depend on Spring APIs
- Spring should not compete with good existing solutions, but should foster integration. (For example, JDO, Toplink, and Hibernate are great O/R mapping solutions. We don't need to develop another one.)
Spring Features
Spring is a layered Java/J2EE application platform, based on code published in Expert One-on-One J2EE Design and Development by Rod Johnson (Wrox, 2002).
Spring includes:
- The most complete lightweight container, providing centralized, automated configuration and wiring of your application objects. The container is non-invasive, capable of assembling a complex system from a set of loosely-coupled components (POJOs) in a consistent and transparent fashion. The container brings agility and leverage, and improves application testability and scalability by allowing software components to be first developed and tested in isolation, then scaled up for deployment in any environment (J2SE or J2EE).
- A common abstraction layer for transaction management, allowing for pluggable transaction managers, and making it easy to demarcate transactions without dealing with low-level issues. Generic strategies for JTA and a single JDBC DataSource are included. In contrast to plain JTA or EJB CMT, Spring's transaction support is not tied to J2EE environments.
- A JDBC abstraction layer that offers a meaningful exception hierarchy (no more pulling vendor codes out of SQLException), simplifies error handling, and greatly reduces the amount of code you'll need to write. You'll never need to write another finally block to use JDBC again. The JDBC-oriented exceptions comply to Spring's generic DAO exception hierarchy.
- Integration with Toplink, Hibernate, JDO, and iBATIS SQL Maps: in terms of resource holders, DAO implementation support, and transaction strategies. First-class Hibernate support with lots of IoC convenience features, addressing many typical Hibernate integration issues. All of these comply to Spring's generic transaction and DAO exception hierarchies.
- AOP functionality, fully integrated into Spring configuration management. You can AOP-enable any object managed by Spring, adding aspects such as declarative transaction management. With Spring, you can have declarative transaction management without EJB... even without JTA, if you're using a single database in Tomcat or another web container without JTA support.
- A flexible MVC web application framework, built on core Spring functionality. This framework is highly configurable via strategy interfaces, and accommodates multiple view technologies like JSP, Velocity, Tiles, iText, and POI. Note that a Spring middle tier can easily be combined with a web tier based on any other web MVC framework, like Struts, WebWork, or Tapestry.
You can use all of Spring's functionality in any J2EE server, and most of it also in non-managed environments. A central focus of Spring is to allow for reusable business and data access objects that are not tied to specific J2EE services. Such objects can be reused across J2EE environments (web or EJB), standalone applications, test environments, etc without any hassle.
Spring's layered architecture gives you a lot of flexibility. All its functionality builds on lower levels. So you can e.g. use the JavaBeans configuration management without using the MVC framework or AOP support. But if you use the web MVC framework or AOP support, you'll find they build on the core Spring configuration, so you can apply your knowledge about it immediately.
Spring Projects
As the leading application platform and integration model, Spring also serves as the base platform for several sister Spring projects. Each project focuses on addressing a particular enterprise middleware problem in open-source. See the Spring projects page for more information.
License
All Spring projects are licensed under the terms of the Apache License, Version 2.0.
Downloads
The downloads are available from the Spring Framework download page
Source Repositories
The Spring 3.0 source code has been modularized and moved from the CVS repository at SourceForge to a new Subversion repository. The new repository for Spring 3.0 can be found at: https://src.springframework.org/svn/spring-framework/
The source code for Spring Framework 2.5 and earlier versions have also been moved to the new Subversion repository. The repository for Spring Framework 2.5 and earlier can be accessed at: https://src.springframework.org/svn/spring-maintenance/
Additional Community Resources
- Get involved with the Spring community on the Spring Community Forums
- Submit bug reports and requests for enhancement using the Spring issue tracker
- Contribute libraries you would like Spring to support by requesting additions to the SpringSource Enterprise Bundle Repository
- Watch for upcoming articles on Spring by subscribing to springframework.org
Upcoming Trainings:
Core Spring Framework
Feb 22 - 25: Wellington
Feb 23 - 26: London
Feb 23 - 26: Paris
Feb 23 - 26: Phoenix
Feb 23 - 26: Denver
Mar 02 - 05: Melbourne
Rich Web Applications with Spring
Feb 16 - 19: Online (US)
Mar 02 - 05: München
Mar 09 - 12: Chicago
Enterprise Integration with Spring
Feb 23 - 26: Minneapolis
Feb 23 - 26: Warsaw
Mar 09 - 12: Frankfurt
Plus:
Hibernate with Spring, Core Spring.NET, Spring Web Services and more...
User login
Upcoming events
- Spring 2GX Day - Madrid, Spain (Event)(10 days)
- SpringSource S2G Forum - Munich (Event)(37 days)












