A framework for building Java web applications based on the Model-View-Controller (MVC) pattern. It promotes flexible and decoupled code from the underlying view technologies.
Spring MVC is an action-based (as opposed to component-based) web framework built on top of the Spring IOC Container. MVC stands for Model View Controller, a long standing design pattern that layers an application separating presentation concerns from business logic see Portland Pattern Repository's MVC Entry
Spring Version 5.0 fully supports Java 9 features, this release now requires Java SE 8.
Major Spring Releases
- First Release : Year 2004
- Spring 2.0 : Intoduced xmlnamespaces and aspectj support.
- Spring 2.5 : Anotation Based Configuration
- Spring 3.0 : Strong Java 5+ foundation across framework, Introduced @Configuration model
- Spring 3.2 : Java Based Configuration introduced
- Spring 4.0 : Java 8 Support, removed Deprecated classes.
- Spring 5.0 : Java 9 Support, reactive programming support
The Spring Framework comprises several modules that provide a range of services:
- spring-ioc Inversion of Control container: configuration of application components and lifecycle management of java objects, done mainly via dependency injection
- spring-aop Aspect-oriented programming: enables implementation of cross-cutting routines
- spring-data Data access: working with relational database management systems on the java platform using jdbc and object-relational mapping tools and with nosqldatabases
- spring-transactions Transaction management: unifies several transaction management APIs and coordinates transactions for Java objects
- spring-mvc Model-view-controller: an HTTP- and servlet-based framework providing hooks for extension and customization for web applications and RESTfull web services.
- spring-remoting Remote Access framework: configurative RPC-style export and import of Java objects over networks supporting rmi, corba and HTTP-based protocols including web services (soap)
- Convention-over-configuration: a rapid application development solution for Spring-based enterprise applications is offered in the spring-roo module
- spring-batch Batch processing: a framework for high-volume processing featuring reusable functions including logging/tracing, transaction management, job processing statistics, job restart, skip, and resource management
- Authentication and authorization: configurable security processes that support a range of standards, protocols, tools and practices via the Spring Security sub-project (formerly - Acegi Security System for spring).
- spring-remoting Remote Management: configurative exposure and management of Java objects for local or remote configuration via jmx.
- spring-messaging Messaging: configurative registration of message listener objects for transparent message-consumption from message queues via jms, improvement of message sending over - - standard jms APIs
- spring-test Testing: support classes for writing unit tests and integration tests