# Spring Framework - brief explanation

Spring Framework is definitely the most popular Java framework, so knowledge of it is crucial for everyone who want to become or who actually is a Java Developer. 
<br>

The most of job offers for Java Software Engineers has Spring knowledge as requirement. 

<img src="https://media0.giphy.com/media/qgQUggAC3Pfv687qPC/giphy.gif?cid=790b76111b7d5493ff8af8f30809a2f897f88c74673e1467&rid=giphy.gif&ct=g" style="margin: 0 auto; justify-content: center;" />


In this article I want to give you brief explanation what Spring Framework is and explain it's infrastructure and functions.



## Explanation
Firstly, we have to understand what is a framework.
### Framework

> A structure which helps build software in easier and faster way than without it. It provides a basic backbone of application, so there is no reason to start building an app from scratch. 

**More about framework definition you can read in my another** [article](https://unicodely.net/framework-what-exactly-is)

## Spring Framework vs Spring Boot


**Spring Framework **is a framework which provides a tons of ready-to-use tools which standalone implementation could takes a lot of time and require specified skills. It is abstraction level for building web applications.



**Spring Boot** is a "package", which contains Spring Framework, configuration and web app "server".

![g1638.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1643536614793/wR0qmiNr_.png)

If you create application with Spring, for 99% sure you use Spring Boot as complete tool.



## Spring Framework

It is a Java platform that provides well-prepared infrastructure support for developing Java apps. The first edition was released in 2002.


Spring Framework is used for creating backend part of application for platform of Java EE - Enterprise Edition. 
<br>

It is based on two fundamental functionalities:
- [Inversion of Control (IoC)](https://docs.spring.io/spring-framework/docs/3.2.x/spring-framework-reference/html/overview.html#overview-dependency-injection)
- [Dependency injection](https://riteshpanigrahi.hashnode.dev/spring-dependency-injection-and-autowiring)


## Examples of use
In short, Spring uses this two things to allow you to build business applications with different levels of complexity. For example:
- microservices as backend
- standard backend applications
- cloud based applications
- REST APIs


## Conclusion

Concluding, spring makes programming Java apps easier, quicker and safer.
Spring increases speed and productivity of creating a software which has made it the most famous Java framework.

## Helpful links:

- [Spring Framework website]( spring.io/projects/spring-framework/)
- [Spring website project](spring.io)
- [Tech documentation](spring.io/docs)
