Starting with Spring Framework? Here's what you need to know
Tags: spring, springboot, java, beginners
Published: 2021-09-21 12:04:36

Spring is a common term in the dev community, as a beginner, its wideness may overwhelm you on the first step you take towards it. I'm here to make it simpler.

The Spring Framework is a Java platform application framework and inversion of the control (IoC) container. Any Java program may utilize the framework's fundamental capabilities, however, there are extensions for creating web apps on top of the Java EE platform. [Spring Framework - Wikipedia](https://en.wikipedia.org/wiki/Spring_Framework)










## Why using Spring?
Over the years Spring Framework has proven itself to be :
- **Everywhere**: Developers all across the world rely on Spring's adaptable libraries. Every day, millions of end-users enjoy pleasant experiences from Spring, whether it's streaming TV, online shopping, or a variety of other creative solutions. All of the major tech companies, including Alibaba, Amazon, Google, Microsoft, and others, have contributed to Spring.

- **Flexible**: Spring's extensible and extensive collection of extensions and third-party libraries enable developers to create nearly any application they can imagine. The Inversion of Control (IoC) and Dependency Injection (DI) capabilities of Spring Framework offers the foundation for a diverse collection of features and functionality. Spring offers the tools to let you develop secure, reactive, cloud-based microservices for the web or complicated streaming data flows for the enterprise.

- **Productive**: Spring Boot revolutionizes the way you approach Java programming jobs, greatly simplifying your workflow. Spring Boot makes microservice development a breeze by combining essentials like an application environment and an auto-configured, embedded web server. You can move even quicker by combining Spring Boot with Spring Cloud's extensive collection of supporting libraries, servers, patterns, and templates to quickly deploy complete microservices-based architectures to the cloud.

- **Fast**: By default, Spring provides quick startup, fast shutdown, and efficient execution. For even more efficiency, Spring projects are increasingly using the reactive (nonblocking) programming style. Spring's superpower is developer productivity. Spring Boot makes it easier for developers to create apps with considerably less effort than alternative paradigms. Embedded web servers, auto-configuration, and "fat jars" make it easy to get started, and innovations like Spring DevTools' LiveReload allow developers to iterate quicker than ever before. With the Spring Initializr at start.spring.io, you can even start a new Spring project in seconds.

- **Secure**: Spring has a track record of promptly and properly dealing with security concerns. Spring committers collaborate with security experts to fix and test any identified flaws. Third-party dependencies are also constantly checked, and updates are released on a regular basis to make your data and apps as secure as possible. Spring Security also makes it easy to connect with industry-standard security schemes and offers trustworthy, secure-by-default solutions.

- **Supportive**: Spring's community is vast, international, and varied, encompassing people of all ages and skills, from total beginners to seasoned veterans. You can discover the assistance and resources you need to advance to the next level, no matter where you are on your journey: quickstarts, guides & tutorials, videos, meetings, support, or even formal training and certification.


## What can you do using Spring?

- Microservices [Spring | Microservices](https://spring.io/microservices)
- Reactive systems [Spring | Reactive](https://spring.io/reactive)
- Cloud distributed structures [Spring | Cloud](https://spring.io/cloud) 
- Web applications [Spring | Web Apps](https://spring.io/web-applications) 
- Serverless Applications and Function as a Service (FaaS) [Spring | Serverless](https://spring.io/serverless)
- Event-driven Systems [Spring | Event Driven](https://spring.io/event-driven) 
- Batches and automated tasks. [Spring | Batch](https://spring.io/batch) 


### What requirements I need to have before getting started with Spring.
Generally speaking, you need to have a good knowledge of **Java core**, a basic understanding of **data structures**, **OOP**, **IoC**, and **dependency injection**.
But, you also need to know the basics of the framework you intend to use inside the Spring ecosystem, for example, if you are using **Spring Data JPA** I believe you must know how **JPA** works in the first place.

>**Don't make the beginners' mistake, you don't have to know all about Spring before starting, it always comes piece by piece.**

### Where to start?
As previously said, Spring is a whole ecosystem, it is highly recommended to enter it via the Spring Boot door, to do so I suggest this official article: ​​[Spring | Spring Quickstart Guide](https://spring.io/quickstart) 

You can check my new article on Spring Boot [here](http://elattar.me/posts/getting-started-with-spring-boot-creating-a-simple-movies-list-api/).

### More resources

#### Learning sites

- [**Spring learn**](https://spring.io/learn): The official learning site and also my first direction when I need to look for something concerning Spring.
- [**Baeldung**](https://www.baeldung.com/learn-spring-course): A powerful site that provides devs with a set of informative guides with practical examples following the best practices.
- [**DZone**](https://dzone.com/articles/introducing-spring-boot): DZone provides the information, resources, and tactics that IT professionals require. construct the future Are you a non-member? DZone.com is a prominent provider of information resources for software professionals and one of the world's largest online communities.

#### Youtube Channels

If you prefer videos, there's a lot of YouTube channels which I'm sure you'll find useful :

- [Java Brains](https://www.youtube.com/c/JavaBrainsChannel)
- [Amigoscode](https://www.youtube.com/c/amigoscode)

### Training & certification

In your advanced learning stages, you absolutely need to validate your knowledge, in other words, to certify your assets. Here's all you have to know : [Spring | training](https://spring.io/training)