Spring is a lightweight framework and provides integration of various other tools/frameworks such as JWT, Hibernate, Flyway, GraphQL and many more.
JWT/KeyClock for token-based security in WebApp.
Hibernate for ORM which helps in database connectivity.
Flyway for maintaining the versions of DB scripts with each modification in the existing DB Tables and Data Manipulation.
GraphQL for static style of webservices which helps in gathering the data in a single http rest call from heterogeneous objects with full control on number of parameters data to be extracted from the request and also provides facilities of putting required filters on the rest call for extraction of user specific data only and mitigating the extra overload of unnecessary data extracted in normal Restful web services.
Kafka/JMS for Topic or event-based massage driven application.
2. Spring Framework Modules
Core Container (IOC and Bean), Data Access/Integration, Web MVC, AOP, Security and Test.
1. Spring Core Container is core module consist of Inversion of Controller (IOC) and Beans, Context, Expression Language.
2. Data Access module is used for database connectivity with Spring Application such as JDBC, ORM, JMS.
3. Web MVC also known as Model View Container is the most important module after Spring Core Container. The whole Web application development revolve around this module.
4. AOP also known as Aspect Oriented Programming, when ever some events happen so we provide the dynamic advice execution instead of execution of hardcode logic.
5. Spring Security provides security by default which can be wrapped with customized implantation as well for webApp specific scenario usecases.
6. Spring Test module helps in testing the developed App code on unit level, module level as well as whole app integration level.
Note: - Spring makes application loosely coupled using Dependency Injection. Dependency Injection is an implementation of the Inversion of Control principle.
1. Predefined Templates - Spring framework provides templates for JDBC, Hibernate, JPA and many more technologies, so there is no need to write too much of boiler plate code.
2. Loose Coupling - Spring applications are loosely coupled because of dependency injection which make this framework developers first choice while thinking of any web app project.
3. Easy to test - The Dependency Injection makes easier to test the application.
4. Lightweight – Spring framework is said to be depends on POJO implementation and this POJO implementation makes Spring Lightweight.
5. Fast Development - The Dependency Injection feature of Spring Framework and it support to various frameworks makes the easy development of JavaEE application.