Spring Framework

The Spring Framework is an open source project that started out with the aim to simplify Java EE but has now grown in size and complexity and is actually capable of almost replacing a full blown Java EE platform. Now Spring has become a Dependency Injection Container or an Inversion of Control Container, where it is good at removing hard coding and instead injecting dependencies. In short Spring helps get complex solutions built faster, with the aim of making development easier.

The Spring Framework can be used in any Java solution and is a very common choice by Java developers because it is comprehensive and does a good job. There are several projects or parts within the Framework like Spring Boot and Spring Batch as well as the Spring Framework itself.

A good place to start with Spring is the Spring Initializr which is good for either getting a head start or just seeing how you pull some things together. The source for the Spring Initializr is at spring-io/initializr: A quick-start generator for Spring projects for those that are curious.

The Spring Framework has six key areas as follows:

  • Core: the foundation, a "dependency injection container"
  • Web: for handling web requests
  • AOP: Aspect Oriented Programming, security is a good example, especially Spring Security
  • Data Access: enhanced JDBC, removing boilerplate code
  • Integration: primarily REST client and server but so much more
  • Testing: focusing on unit and integration testing, including pre-written mocks
It is worth noting that Spring Framework's Data Access support is extended in the Spring Data project, which itself is an umbrella project.

Learning Spring

It has to be said, Spring is not the easiest technology to learn, it can be confusing and complex. There are many helpful resources online but you will find a lot of them are based on older versions of Spring or older ways of working.

A good place to start learning is Making the most of available resources for Spring Boot
Although a little dated now, this is useful Online Spring Course: Spring Fundamentals | Pluralsight
The main Spring Framework documentation is Spring Framework Documentation
The main Spring Boot documentation is Spring Boot Reference Documentation

IntelliJ

There is excellent support for Spring in IntelliJ IDEA: The Java IDE for Professional Developers by JetBrains, which includes an easy to use version of the Spring Initializr, although this is not in the free Community Edition it is only in the paid for Ultimate Edition.

Visual Studio Code

If you prefer a more open source way of working or don't want to pay for IntelliJ then Visual Studio Code with Spring Boot Extension Pack - Visual Studio Marketplace is a fantasic option and is listed at Spring Tools 4 so has backing from Pivotal.