Spring is a layered Java/J2EE application framework, based on code published in Expert One-on-One J2EE Design and Development by Rod Johnson (Wrox, 2002).
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 will find they build on the configuration framework, so you will be able to apply your knowledge about it immediately.
Here are some key features of "Spring":
Modern Web:
· Complete support for modern applications including REST, HTML 5, conversations and AJAX.
Data Access:
· Supports traditional RDBMS as well as new NoSQL solutions, map-reduce frameworks and cloud based data services.
Integration:
· Enterprise orchestration and adapters for distributed applications, asynchronous message-based applications, and batch applications.
Mobile:
· Web support for mobile client platforms including Android and iPhone.
Social:
· Integration with Facebook, Twitter, LinkedIn, TripIt and other prominent social networks.
Security:
· Authorization control for all tiers and authentication integration to dozens of providers.
Cloud Ready:
· Spring applications are supported on all popular cloud platforms like Cloud Foundry, Google App Engine and Amazon EC2.
Modularity:
· Plain old Java Objects keep your code concise, simple and modular
Productivity:
· Over 70% of developers report productivity gains and reduction in time to deploy with Spring
Portability:
· Applications run on Tomcat, all Java EE servers as well as cloud platforms
Testability:
· Cleanly expressed dependencies make unit and integration testing easier
Requirements:
· Java 1.4 or later
What's New in This Release: [ read full changelog ]
· compatibility with OpenJDK 8 for target 1.5/1.6/1.7 compiled Spring Framework 3.2.x applications (SPR-9639)
· compatibility with OSGI-style use of generics in source code that got compiled to 1.4 byte code (SPR-10559)
· consistent detection of Order annotation in superclasses and interfaces (SPR-10514)
· fixed regression with type detection for child bean definitions (SPR-10374)
· fixed configuration class overriding in terms of superclasses (SPR-10546)
· minimized ASM usage during configuration class processing (SPR-10292)
· added public "getName()" accessor to MethodReference (SPR-10422)
· fixed ReflectiveMethodResolver to avoid potential UnsupportedOperationException on sort (SPR-10392)
· JdbcTemplate defensively uses JDBC 3.0 getParameterType call for Oracle driver compatibility (SPR-10385)
· introduced public ArgumentPreparedStatementSetter and ArgumentTypePreparedStatementSetter classes (SPR-10375)
· fixed BeanPropertyRowMapper to only prefix actual upper-case letters with underscores (SPR-10547)
· ...