Spring Framework Tutorial 0/14 lessons ~6 min read Lesson 2

    A Short History of Spring

    Spring started in 2003 as a reaction to the complexity of early J2EE.

    Course progress0%
    Focus
    5 guided sections
    Practice signal
    Examples included
    Career prep
    Foundation builder

    Introduction

    Spring started in 2003 as a reaction to the complexity of early J2EE. Rod Johnson's book argued that you should be able to build serious enterprise applications without inheriting from framework classes or running on a heavyweight server. The companion code became the Spring Framework.

    Over the next two decades Spring grew into an ecosystem: Spring Security, Spring Data, Spring Batch, Spring Integration, Spring Cloud, and — most famously — Spring Boot, which made starting a new project a one-minute job.

    Knowing the timeline is not trivia: it explains why two Spring codebases can look like different languages.

    Understanding the topic

    Key milestones to remember:

    • 2003 — Spring 1.0, XML-driven IoC container.
    • 2006–2009 — Annotations replace most XML; AOP matures; Spring MVC ships.
    • 2014 — Spring Boot 1.0; convention over configuration goes mainstream.
    • 2017 — Spring 5 adds reactive support (WebFlux, Project Reactor).
    • 2022+ — Spring 6 / Boot 3, baseline Java 17, native images via GraalVM, observability built-in.

    Syntax reference

    How the same bean was declared across the eras:

    java
    <!-- 2004: XML era -->
    <bean id="clock" class="java.time.Clock" factory-method="systemUTC"/>
    // 2010: Java config era
    @Configuration
    class TimeConfig {
    @Bean Clock clock() { return Clock.systemUTC(); }
    }
    // 2014+: Boot era — often nothing to write; a starter auto-configures it
    @SpringBootApplication
    public class App { public static void main(String[] a) { SpringApplication.run(App.class, a); } }

    Real-world use

    Knowing this timeline helps you read older codebases: an XML-heavy module is usually pre-2010, annotation-driven Java config is post-2010, and a Boot-style starter is post-2014. You will inherit all three in any large company.

    Hands-on exercise

    Reflection: open the GitHub repository of any Spring library and look at its first commit and its latest release. Identify which configuration style each version uses. Write a one-paragraph note on what changed and why.

    Ready to mark this lesson complete?Track your journey across the entire course.