Spex3
    

Java Frameworks: Spring Framework & Spring Boot 🚀


    

    

Java Frameworks: Spring Framework & Spring Boot 🚀
Spring is a powerful, lightweight framework for building enterprise-grade Java applications. It provides features like dependency injection, web development, and microservices support through Spring Boot.

1️⃣ Spring Framework Basics
✅ What is the Spring Framework?
Spring is a modular Java framework that provides:
✔ Dependency Injection (DI) – Simplifies object management.
✔ Spring MVC – For building web applications.
✔ Spring Boot – Simplifies Spring app development.
✔ Spring Data – Simplifies database interactions.
✔ Spring Security – Handles authentication & authorization.

2️⃣ Dependency Injection (IoC - Inversion of Control)
✅ What is Dependency Injection?
Instead of creating objects manually, Spring injects them automatically.

Example: Without Spring DI


public class Car {
private Engine engine = new Engine(); // Tight coupling
}


👎 Problem: If we change Engine, we must modify Car.

Example: With Spring DI
 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
class Engine {
public void start() {
System.out.println("Engine Started!");
}
}

@Component
class Car {
private final Engine engine;

@Autowired // Spring automatically injects Engine
public Car(Engine engine) {
this.engine = engine;
}

public void drive() {
engine.start();
System.out.println("Car is driving!");
}
}


✅ Spring handles object creation, reducing dependencies.

3️⃣ Spring MVC (Web Applications)
Spring MVC is used for building web applications using the Model-View-Controller (MVC) pattern.

Spring MVC Components:
✔ Model – Represents data (e.g., database records).
✔ View – The frontend (e.g., HTML, JSP).
✔ Controller – Handles user requests.

Example: A Simple Spring MVC Controller
 
import org.springframework.web.bind.annotation.*;

@RestController
public class HelloController {

@GetMapping("/hello")
public String sayHello() {
return "Hello, Spring MVC!";
}
}


✅ Visit http://localhost:8080/hello → Output:


Hello, Spring MVC!

4️⃣ Spring Boot (Easier Spring Development)
Spring Boot is a framework that simplifies Spring applications by providing:
✔ Auto-configuration – No need for manual setup.
✔ Embedded servers – No need for Tomcat/Jetty installation.
✔ Production-ready features – Health checks, monitoring, etc.

Steps to Create a Spring Boot App
1️⃣ Use Spring Initializr → https://start.spring.io/
2️⃣ Add dependencies (Spring Web, Spring Boot DevTools, etc.).
3️⃣ Run the Spring Boot application.

5️⃣ Spring Boot Application Example
5.1 Create a Spring Boot Main Class
 
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

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


✅ Spring Boot auto-configures everything!

5.2 Create a REST API in Spring Boot
 
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/api")
public class ApiController {

@GetMapping("/greet")
public String greet() {
return "Hello, Spring Boot!";
}
}

✅ Visit http://localhost:8080/api/greet


Hello, Spring Boot!

6️⃣ Spring Boot + Database (Spring Data JPA)
Spring Boot integrates with databases using Spring Data JPA.

Example: Connecting Spring Boot to MySQL
1️⃣ Add dependency in pom.xml:

 


org.springframework.boot
spring-boot-starter-data-jpa


mysql
mysql-connector-java


2️⃣ Configure application.properties:

 
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=root
spring.jpa.hibernate.ddl-auto=update


3️⃣ Create an Entity (Database Table)


 
import jakarta.persistence.*;

@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;

// Getters and Setters
}


4️⃣ Create a Repository (Database Access)

 
import org.springframework.data.jpa.repository.JpaRepository;

public interface UserRepository extends JpaRepository {
}


5️⃣ Create a REST Controller for User Management


 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/users")
public class UserController {

@Autowired
private UserRepository userRepository;

@GetMapping
public List getUsers() {
return userRepository.findAll();
}

@PostMapping
public User createUser(@RequestBody User user) {
return userRepository.save(user);
}
}


✅ Test with Postman:

GET /users → Fetch all users.

POST /users → Add a new user.

7️⃣ Spring Boot Advantages
✔ Faster Development – Less configuration.
✔ Microservices Ready – Best for cloud apps.
✔ Built-in Security – Authentication & authorization.
✔ Powerful Database Integration – Supports SQL & NoSQL.

🚀 Summary
✅ Spring Framework – Core features for Java applications.
✅ Spring MVC – Build web applications using controllers.
✅ Spring Boot – Rapid development with auto-configuration.
✅ Spring Data JPA – Simplifies database integration.


    Date: 2025-03-28 00:00:00.000000