Inicio > Cursos > Java > Spring Boot: APIs y Microservicios
JavaJava EnterpriseLección 15 de 15

Spring Boot: APIs y Microservicios

Spring Boot es el framework empresarial dominante en Java. Su magia es la Inversión de Control (IoC): en vez de que tu código cree y gestione sus dependencias, Spring las inyecta automáticamente. Marcas una clase con @Service, @Repository o @Component, y Spring la instancia y la inyecta donde la necesites con @Autowired. Esto desacopla completamente las clases entre sí.

Con Spring Boot puedes crear una API REST completa en minutos: @RestController marca una clase como controlador HTTP, @GetMapping/@PostMapping definen endpoints, y @RequestBody/@PathVariable extraen datos de las peticiones. Spring Boot también autodetecta y configura la base de datos, el servidor web (Tomcat embebido), y decenas de componentes sin configuración manual — esto es lo que significa "convention over configuration".

// 1. ENTIDAD — Modelo de datos
import jakarta.persistence.*;

@Entity
@Table(name = "productos")
public class Producto {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String nombre;
    private double precio;
    private int stock;
    // Getters y setters...
}

// 2. REPOSITORIO — Acceso a datos (Spring Data JPA)
import org.springframework.data.jpa.repository.JpaRepository;

public interface ProductoRepository extends JpaRepository<Producto, Long> {
    List<Producto> findByNombreContaining(String texto);
    List<Producto> findByPrecioLessThan(double max);
}

// 3. SERVICIO — Lógica de negocio
import org.springframework.stereotype.Service;

@Service
public class ProductoService {
    private final ProductoRepository repo;

    public ProductoService(ProductoRepository repo) {
        this.repo = repo; // Inyección por constructor
    }

    public List<Producto> buscar(String texto) {
        return repo.findByNombreContaining(texto);
    }

    public Producto crear(Producto producto) {
        if (producto.getPrecio() <= 0)
            throw new IllegalArgumentException("Precio inválido");
        return repo.save(producto);
    }
}

// 4. CONTROLADOR — Endpoints REST
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/api/productos")
public class ProductoController {
    private final ProductoService service;

    public ProductoController(ProductoService service) {
        this.service = service;
    }

    @GetMapping
    public List<Producto> listar() {
        return service.buscar("");
    }

    @PostMapping
    public Producto crear(@RequestBody Producto producto) {
        return service.crear(producto);
    }

    @GetMapping("/{id}")
    public Producto obtener(@PathVariable Long id) {
        return service.repo.findById(id)
            .orElseThrow(() -> new RuntimeException("No encontrado"));
    }
}
Consejo🏗️ Arquitectura Spring Boot: Controller (recibe HTTP) → Service (lógica de negocio) → Repository (acceso a datos). Cada capa tiene una responsabilidad única.
← Proyecto: Sistema Bancario

Practica esta lección

Resuelve los ejercicios del curso de Java en la app, gratis y con corrección automática.

Empezar a practicar