Spring Boot: From Basics to Production · Spring Core and Spring Boot Fundamentals

Creating a Spring Boot Project

Generate a project with Spring Initializr, run it and understand its structure.

Create a free account to save this page, take notes and track your progress. Sign in

Spring Boot builds on the Spring Framework with opinionated defaults: auto-configuration, embedded servers (Tomcat by default), starter dependencies and production features (Actuator). Generate a project at start.spring.io (Java 21, Maven or Gradle, plus the Web, Validation, Data JPA and Actuator dependencies), then run it with ./mvnw spring-boot:run or ./gradlew bootRun. The @SpringBootApplication class enables component scanning and auto-configuration for its package and sub-packages.

package com.example.shop;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
public class ShopApplication {
    public static void main(String[] args) {
        SpringApplication.run(ShopApplication.class, args);
    }
}

@RestController
class HelloController {
    @GetMapping("/hello")
    String hello() {
        return "Hello, Spring Boot";
    }
}
curl https://start.spring.io/starter.zip -d dependencies=web,validation,data-jpa,actuator,postgresql \
     -d javaVersion=21 -d type=maven-project -d groupId=com.example -d artifactId=shop -o shop.zip
./mvnw spring-boot:run        # http://localhost:8080/hello

Common pitfalls

  • Placing classes outside the main class's package, so component scanning misses them.
  • Adding many starters 'just in case' — each brings auto-configuration and startup cost.
  • Using an unsupported Spring Boot version (check the support timeline).

Key points

  • start.spring.io generates projects
  • @SpringBootApplication = config + scanning + auto-config
  • Embedded server, runnable JAR

Further reading: Spring Boot reference documentation

Practice questions

What does @SpringBootApplication combine?

Answer

@SpringBootConfiguration (a @Configuration class), @EnableAutoConfiguration and @ComponentScan of the class's package and sub-packages.

Why might a @RestController not be picked up?

Answer

It's in a package that isn't under the main application class's package, so component scanning doesn't find it.

Open in the app to mark lessons complete, take notes and track your progress.

Was this page helpful?