Spring is open source framework provide effective and easy development of java application. The Spring framework , created by Rod Johnson and first version in June 2003 released under the Apache 2.0 license. It is also known king of framework or framework of frameworks for java development because it is easily merge with other framework like struts ,hibernate,jpa etc.
The basic idea behind spring is to make code loosely coupled(independent) with help of IOC(inversion of control) and xml which we read later in tutorial.
Loosely Coupled Application developed using spring framework are loosely coupled means code can be configured using xml and Inversion of Control.
Lightweight Spring is lightweight when it comes to size and transparency. The basic version of spring framework is near about 2MB.
Easy to merge with Others Spring works well and fit easily with other like hibernate , JPA etc.
MVC Support Spring Framework are support MVC (Model - View - Controller) effectively .
Testing Testing an application written with Spring is simple because environment-dependent code is moved into this framework. Furthermore, by using JavaBean-style POJOs, it becomes easier to use dependency injection for injecting test data
Annotation Support Spring provide many annotation to work with .
Transaction managementSpring provides a consistent transaction management interface
AOP Aspect Oriented Programming is the biggest feature of Spring FrameWork. Help to make modular programming with the help of Aspects
In Spring framework, Dependency Injection is a design pattern which is used to define the object dependencies between each other.
When write code for a typical Java application, classes should be as independent as possible of other Java classes to increase the possibility to reuse of classes and to test them independently of other classes while doing testing. Dependency Injection helps in working with these classes together and same time keeping them independent to each other.Aspect Oriented Programming (AOP)
One of the major components of Spring is the Aspect oriented programming (AOP) framework. The key unit of modularity in OOP is the class, whereas in AOP the unit of modularity is the aspect. Whereas DI helps you decouple your application objects from each other, AOP helps you decouple cross-cutting concerns from the objects that they affect.
Aspect Oriented Programming entails breaking down program logic into distinct parts called so-called concerns. The functions that span multiple points of an application are called cross-cutting concerns and these cross-cutting concerns are conceptually separate from the application's business logic. A cross-cutting concern is a concern that can affect the whole application and should be centralized in one location in code as possible, such as transaction management, authentication, logging, security etc.