**//The BootDemoApplication class**
package com.tutorial.bootdemo;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class BootDemoApplication {public static void main(String[] args) {SpringApplication.run(BootDemoApplication.class, args);}}
The BootDemoApplication class doesn't have explicit imports or references to other classes, but Spring Boot works through "magic" - specifically through annotations and component scanning.
Here's how it works:
- @SpringBootApplication Annotation
This single annotation is actually a combination of three annotations:
- @Configuration - Marks this as a configuration class
- @EnableAutoConfiguration - Enables Spring Boot's auto-configuration
- @ComponentScan - This is the key! It scans for components
2. Component Scanning
The @ComponentScan (part of @SpringBootApplication) automatically scans the current package and all sub-packages for Spring components:
com.tutorial.bootdemo/ ← Base package (where BootDemoApplication is)
├── controller/ ← Scanned automatically
│ └── StudentController.java ← @RestController found and registered
├── service/ ← Scanned automatically
│ └── StudentServiceimpl.java ← @Service found and registered
├── dao/ ← Scanned automatically
│ └── StudentRepository.java ← @Repository found and registered
└── BootDemoApplication.java ← Starting point
3. Spring Annotations Auto-Discovery
Spring Boot automatically finds and registers:
- @RestController (StudentController)
- @Service (StudentServiceimpl)
- @Repository (StudentRepository)
- @Entity (Student)
4. Dependency Injection
Spring automatically wires dependencies using @Autowired:
Controller → Service → Repository
5. Auto-Configuration
Spring Boot automatically configures:
- Database connections (from application.properties)
- JPA/Hibernate setup
- Web server (Tomcat)
- JSON serialization
So the "magic" happens because:
- @SpringBootApplication triggers component scanning
- All your classes are in sub-packages of com.tutorial.bootdemo
- Spring finds all annotated classes automatically
- Spring wires everything together using dependency injection
This is why you don't need explicit imports - Spring Boot discovers and connects everything automatically based on the package structure and annotations!