Spring being a full stack framework perfects the utilisation of your sources as well as optimises your basic resources and allows you to replace certain libraries and frameworks.

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 the Enterprise JavaBeans (EJB) model. The Spring Framework is open source.

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

Easy to Use - It facilitates to write the application in Java, Scala, Python, R, and SQL. It also provides more than 80 high-level operators.

Lightweight - It is a light unified analytics engine which is used for large scale data processing.