Spring Initializr

https://start.spring.io/

  • Spring Boot automates many tasks, but initial setup (deps, structure) still needs definition
  • Spring Initializr helps generate a ready-to-use project with selected dependencies
    • The options you select here actually influence the entire build.gradle or pom.xml, application.properties, and the overall src structure.
  • You can also just use an Ide
    • 메뉴: File > New > Project > Spring Initializr + follow the info (metadata)
ItemDescription
ProjectSelect Maven or Gradle
LanguageJava (or Kotlin, Groovy)
Spring BootVersion selection available
Project MetadataEnter Group, Artifact, Name, Package Name, etc.
DependenciesSelect desired Starters (Web, JPA, Security, etc.)

Project metadata

  • Group (groupId)
    • Org or project group ID, follows reverse domain
    • Ex: Company Ohgiraffers’s abc project → com.ohgiraffers.abc
    • Ex: Organization Spring’s xyz project → org.spring.xyz
  • Artifact (artifactId)
    • Project/module name within group
    • Becomes the JAR/WAR name (e.g., user-service)
  • Name
    • Human-readable project name (e.g., User Service API)
    • Used in docs/IDEs
  • Package Name
    • Base Java package for code (e.g., com.mycompany.myapp.userservice)
    • Often = Group + Artifact

Java version

  • Choose java version
    • Java 17+ recommended** (Spring Boot 3.x+ requires Java 17)
    • JDK version must match build tool config (e.g., Gradle) to avoid compile errors

Jar vs. War (packaging method)

  • Jar (Default)
    • Standard choice unless special needs
    • Creates executable single JAR → run with java -jar
    • Includes embedded Tomcat
    • ✅ Fits most projects (MSA, cloud, Docker)
  • War
    • Traditional WAR deployment
    • Requires external WAS (Tomcat, JBoss, etc.)
    • Used mainly for legacy system integration

Spring Boot version

  • Generally use the Default (Stable) version
  • Use Snapshot/Beta only for testing new features or preview APIs
  • All team members must use the same Spring Boot version
    → Prevents build errors and config mismatches