Skip to content

MansiArora-dev/springboot-introduction

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

4 Commits
Β 
Β 

Repository files navigation

🌱 Spring Boot Introduction

A hands-on project focused on learning Spring Beans and Dependency Injection concepts.

🎯 What I Learned

  • Spring Beans lifecycle and configuration
  • Dependency Injection (Constructor, Setter, Field)
  • IoC Container and Component Scanning
  • Spring Profiles for environment-specific configurations
  • Best practices for enterprise applications

πŸš€ Quick Start

git checkout master  # Main code is in master branch

# Run using IntelliJ IDEA (Recommended)
 1. Click Run button in IntelliJ
 2. Or use Run Configuration with profile arguments

# Alternative: Set profile in application.properties
 spring.profiles.active=dev

            OR

# Run with default profile
mvn spring-boot:run

# Run with specific profile
mvn spring-boot:run -Dspring-boot.run.profiles=dev
mvn spring-boot:run -Dspring-boot.run.profiles=prod

πŸ’» Technologies

  • Java | Spring Boot | Maven
  • Spring Core (IoC & DI) | REST APIs

πŸ“‚ Project Structure

src/main/java/com/springboot/introduction/
β”œβ”€β”€ IntroductionToSpringbootApplication.java  # Main Spring Boot class
β”œβ”€β”€ AppConfig.java                            # Bean configuration
β”œβ”€β”€ Apple.java                                # Bean example with lifecycle
β”œβ”€β”€ DB.java & ProdDB.java                     # Database interface & implementation
β”œβ”€β”€ DBService.java & DevDB.java               # Service layer with DI
└── resources/application.properties          # App configuration

πŸ”§ Core Concepts Demonstrated

Bean Lifecycle Example

@Component
public class Apple {
     void eatApple() {
        System.out.println("I am eating the apple");
    }

    @PostConstruct
    void callThisBeforeAppleIsUsed() {
        System.out.println("Creating the apple before use");
    }
    
    @PreDestroy
    void callThisBeforeDestroy() {
        System.out.println("Destroying the Apple bean");
    }
}

Spring Profiles Example

@Component
@ConditionalOnProperty(name = "deploy.env", havingValue = "development")
public class DevDB implements DB {

    public String getData() {
        return "Dev Data";
    }

}

@Component
@ConditionalOnProperty(name = "deploy.env", havingValue = "production")
public class ProdDB implements DB{

    public String getData() {
        return "Prod Data";
    }
}

Dependency Injection Example

@Service
public class DBService {

    @Autowired
    final private DB db;

    public DBService(DB db) {
        this.db = db;
    }
    String getData() {
        return db.getData();
    }

}

🌟 Key Benefits Learned

  • Loose Coupling - Easy to maintain and test
  • Environment-specific Configuration - Different profiles for dev/prod
  • Reusable Components - Beans managed by Spring
  • Clean Architecture - Separation of concerns

πŸ“ Project Structure

  • main branch: Documentation
  • master branch: Complete Spring Boot code

πŸ‘¨β€πŸ’» Developer

Mansi Arora - Learning Spring Boot fundamentals


⭐ Star if helpful for Spring Boot learning!

About

"Introduction project to Spring Boot focusing on Beans configuration and Dependency Injection."

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published