📁
Basics

Project Structure & Conventions

Standard Layout Samjho
💡 Spring Boot project structure ek WELL-ORGANIZED OFFICE BUILDING jaisa hai — HAR FLOOR (folder) ka EK SPECIFIC PURPOSE hai, aur SAB employees (developers) is CONVENTION ko JAANTE hain, isliye NAYE OFFICE (project) mein bhi SEEDHA APNA DESK (relevant folder) DHOOND lete hain.

Standard Maven/Gradle layout follow hota hai — src/main/java (application code), src/main/resources (application.properties, static files, templates), src/test/java (test code). Main application class (jisme @SpringBootApplication hai) ROOT PACKAGE mein rehti hai, taaki COMPONENT SCANNING SAHI se saare sub-packages COVER kare.

CONVENTIONAL organization — controller/, service/, repository/, model/ (ya entity/), config/ — packages HAR "LAYER" ke hisaab se organize hote hain (layered architecture). BADE projects mein, FEATURE-based organization bhi common hai (order/, user/, payment/ — HAR feature APNI complete slice, controller+service+repository ke saath).

bookstore/
├── src/main/java/com/example/bookstore/
│   ├── BookstoreApplication.java     ← @SpringBootApplication, ROOT
│   ├── controller/
│   │   └── BookController.java
│   ├── service/
│   │   └── BookService.java
│   ├── repository/
│   │   └── BookRepository.java
│   ├── model/
│   │   └── Book.java
│   └── config/
│       └── SecurityConfig.java
├── src/main/resources/
│   ├── application.properties
│   ├── static/                        ← CSS, JS, images
│   └── templates/                      ← Thymeleaf (agar server-rendered views)
├── src/test/java/com/example/bookstore/
└── pom.xml
📁
Spring Boot project structure ek WELL-ORGANIZED OFFICE BUILDING jaisa hai — HAR FLOOR (folder) ka EK SPECIFIC PURPOSE hai, aur SAB employees (developers) is CONVENTION ko JAANTE hain, isliye NAYE OFFICE (project) mein bhi SEEDHA APNA DESK (relevant folder) DHOOND lete hain.
1 / 2
⚡ Quick Recap
  • Layered organization: controller/, service/, repository/, model/
  • Main class ROOT package mein — component scanning ke liye zaroori
  • static/ aur templates/ resources folders mein — automatically served
Is page mein (2 subtopics)

LAYERED organization (controller/, service/, repository/) CHHOTE projects ke liye SIMPLE hai — SAB "similar TYPE" ki cheezein EK JAGAH. FEATURE-based (order/, user/, payment/ — HAR ek APNI controller+service+repository ke saath) BADE projects mein BEHTAR SCALE karta hai — EK FEATURE ka SAARA code EK JAGAH milता hai.

  • Layered = chhote projects ke liye simple, "similar type" grouped
  • Feature-based = bade projects mein behtar scale karta hai
  • Bade teams/microservices mein, feature-based zyaada COMMON hai

Main class (@SpringBootApplication wali) ka PACKAGE location, COMPONENT SCANNING ka STARTING POINT DEFINE karta hai. Agar main class com.example.app package mein hai, LEKIN EK controller com.example.other package mein hai (SIBLING, NOT sub-package), WO controller SCAN NAHI hoga — "bean not found" errors ka COMMON REASON.

⚠️Common Mistake: Main class KO ROOT package mein RAKHNA CRITICAL hai — agar EK bean "MYSTERIOUSLY" register NAHI ho rahi, SABSE PEHLE PACKAGE STRUCTURE check karo.