The Spring Framework is an application framework and inversion of control container for the Java platform. The framework’s core features can be used by any Java application, but there are extensions for building web applications on top of the Java EE (Enterprise Edition) platform. Although the framework does not impose any specific programming model, it has become popular in the Java community as an addition to, or even replacement for the Enterprise JavaBeans (EJB) model. The Spring Framework is open source.
The first version was written by Rod Johnson, who released the framework with the publication of his book Expert One-on-One J2EE Design and Development in October 2002. The framework was first released under the Apache 2.0 license in June 2003. The first milestone release, 1.0, was released in March 2004 with further milestone releases in September 2004 and March 2005. The Spring 1.2.6 framework won a Jolt productivity award and a JAX (Java API for XML) Innovation Award in 2006. Spring 2.0 was released in October 2006, Spring 2.5 in November 2007, Spring 3.0 in December 2009, Spring 3.1 in December 2011, and Spring 3.2.5 in November 2013. Spring Framework 4.0 was released in December 2013. Notable improvements in Spring 4.0 included support for Java SE (Standard Edition) 8, Groovy 2, some aspects of Java EE 7, and WebSocket.
Spring Framework 4.2.0 was released on 31 July 2015 and was immediately upgraded to version 4.2.1, which was released on 01 Sept 2015. It is “compatible with Java 6, 7 and 8, with a focus on core refinements and modern web capabilities”.
Spring Framework 4.3 has been released on 10 June 2016 and will be supported until 2020. It “will be the final generation within the general Spring 4 system requirements (Java 6+, Servlet 2.5+), […]”.
Spring 5 is announced to be built upon Reactive Streams compatible Reactor Core.
The Spring Framework includes several modules that provide a range of services:
- Spring Core Container: this is the base module of Spring and provides spring containers (BeanFactory and ApplicationContext).
- Aspect-oriented programming: enables implementing cross-cutting concerns.
- 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).
- Convention over configuration: a rapid application development solution for Spring-based enterprise applications is offered in the Spring Roo module
- Data access: working with relational database management systems on the Java platform using Java Database Connectivity (JDBC) and object-relational mapping tools and with NoSQL databases
- Inversion of control container: configuration of application components and lifecycle management of Java objects, done mainly via dependency injection
- Messaging: configurative registration of message listener objects for transparent message-consumption from message queues via Java Message Service (JMS), improvement of message sending over standard JMS APIs
- Model–view–controller: an HTTP- and servlet-based framework providing hooks for extension and customization for web applications and RESTful (representational state transfer) Web services.
- Remote access framework: configurative remote procedure call (RPC)-style marshalling of Java objects over networks supporting Java remote method invocation (RMI), CORBA(Common Object Request Broker Architecture) and HTTP-based protocols including Web services (SOAP (Simple Object Access Protocol))
- Transaction management: unifies several transaction management APIs and coordinates transactions for Java objects
- Remote management: configurative exposure and management of Java objects for local or remote configuration via Java Management Extensions (JMX)
- Testing: support classes for writing unit tests and integration tests
Spring Integration is a framework for Enterprise application integration that provides reusable functions essential to messaging or event-driven architectures.
- routers – routes a message to a message channel based on conditions
- transformers – converts/transforms/changes the message payload and creates a new message with transformed payload
- adapters – to integrate with other technologies and systems (HTTP, AMQP (Advanced Message Queuing Protocol), JMS (Java Message Service), XMPP (Extensible Messaging and Presence Protocol), SMTP (Simple Mail Transfer Protocol), IMAP (Internet Message Access Protocol), FTP (File Transfer Protocol) as well as FTPS/SFTP, file systems, etc.)
- filters – filters a message based on criteria. If the criteria are not met, the message is dropped
- service activators – invoke an operation on a service object
- management and auditing
Spring Integration supports pipe-and-filter based architectures.
The above is a brief about Spring Framework. Watch this space for more updates on the latest trends in Technology.