Spring Framework

Spring Framework is one of the most popular Java EE frameworks. This article is designed for Java developers who want to learn Spring framework architecture, it’s core components and various projects that come under spring framework umbrella.

Just have a look at the Google Trends chart for Spring Framework, Servlet, JSP and JSF. It’s clear that Spring is leaps and bounds ahead from all other Java EE technologies.

Spring Framework

Spring is one of the most popular frameworks for Java enterprise edition. Developers all over the world use Spring for developing reliable and high-quality applications. Spring framework was designed by Rod Johnson. Since then Spring has become an alternative technology in java world for EJB model. You can create different kinds of applications using spring framework.

Spring Framework – DI, IoC, AOP

It is impossible to understand what is Spring Framework without understanding what is Dependency Injection and Inversion of Control. Dependency Injection also called as DI, is one of the types of Inversion of Control (IoC).

Inversion of Control – this is the principle of object-oriented programming, in which objects of the program do not depend on concrete implementations of other objects, but may have knowledge about their abstractions (interfaces) for later interaction.

Dependency Injection – is a composition of structural design patterns, in which for each function of the application there is one, a conditionally independent object (service) that can have the need to use other objects (dependencies) known to it by interfaces. Dependencies are transferred (implemented) to the service at the time of its creation. This is a situation where we introduce an element of one class into another. In practice, DI is implemented by passing parameters to the constructor or using setters. Libraries that implement this approach are also called IoC containers.

Aspect oriented programming – a programming paradigm that allows you to distinguish cross-through (functional) functionality in application. These functions, which span multiple application nodes, are called cross-cutting concerns and these cross-cutting notes are separated from the immediate business logic of the application.

In OOP, the key unit is the class, while in AOP, the key element is the aspect. DI helps to separate application classes into separate modules, and AOP helps to separate cross-cutting concerns from the objects they affect.

Spring Framework Architecture

Spring Framework is divided into a number of separate modules, which allows you to decide which ones to use in your application. Below image illustrates the most important modules of Spring Framework architecture.

Let’s look into spring ecosystem modules one by one.

Spring Framework Core Components

The Core container from Spring consists of four modules: SpEL , Context, Core, Beans. Description for these elements are as follows:

The SpEL module provides a powerful expression language for manipulating objects during execution.

Context is built on the basis of Beans and Core and allows you to access any object that is defined in the settings. The key element of the Context module is the ApplicationContext interface.

The Core module provides key parts of the framework including IoC and DI properties.

Spring Framework Miscellaneous Modules

Spring also includes a number of other important modules, such as AOP, Aspects, Instrumentation, Messaging, and Test.

AOP implements aspect-oriented programming and allows using the entire arsenal of AOP capabilities.

The Aspects module provides integration with AspectJ, which is also a powerful AOP framework.

Instrumentation is responsible for supporting class instrumentation and class loader, which are used in server applications.

The Messaging module provides STOMP support.

Finally, the Test module provides testing using TestNG or the JUnit Framework.

Spring 5 Features

Spring 5 brought massive update to Spring 4. Some of the important features of Spring 5 are:

Support for Java 8, Java 9, Java EE 7, Java EE 8, Servlet 4.0, Bean Validation 2.0, and JPA 2.2. I am happy to see that Spring is trying to catch up with latest versions of major technologies being used.

Improved Logging with new module – spring-jcl.

File operations are using NIO 2 streams, hence improved performance.

Support for Reactor 3.1 Flux and Mono as well as RxJava 1.3 and 2.1 as return values from Spring MVC controller methods.

Support for Kotlin, Project Lombok, JSON Binding API as an alternative to Jackson and GSON.

Popular Categories

Newsletter for You

Don't miss out!

Subscribe To Newsletter

We promise not to spam you. Unsubscribe at any time.

Invalid email address

Thanks for subscribing!

JournalDev is one of the most popular websites for Java, Python, Android, and related technical articles. Our tutorials are regularly updated, error-free, and complete. Every month millions of developers like you visit JournalDev to read our tutorials.

JournalDev was founded by Pankaj Kumar in 2010 to share his experience and learnings with the whole world. He loves Open source technologies and writing on JournalDev has become his passion.