-
Notifications
You must be signed in to change notification settings - Fork 0
Code Structure
Una aplicación completa de Spring Boot con integración de despliegue en AWS.
spring-boot-aws-api/
├── 📂 src/
│ ├── 📂 main/
│ │ ├── 📂 java/
│ │ │ │ └── 📄 ProductRepository.java
│ │ │ └── 📄 ApiApplication.java
│ │ └── 📂 resources/
│ │ ├── 📂 static/
│ │ │ ├── 📂 css/
│ │ │ │ └── 📄 styles.css
│ │ │ ├── 📂 js/
│ │ │ │ └── 📄 script.js
│ │ │ └── 📄 index.html
│ │ └── 📄 application.properties
├── 📂 .github/
│ └── 📂 workflows/
│ └── 📄 deploy.yml
├── 📄 Dockerfile
└── 📄 README.md
La clase Product.java define la entidad principal con sus atributos y mapeo JPA:
@Entity
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String description;
private Double price;
private Integer stock;
// Getters y Setters
}Función: Define la estructura de datos y el mapeo a la tabla de base de datos.
ProductRepository.java proporciona los métodos de acceso a datos:
@Repository
public interface ProductRepository extends JpaRepository<Product, Long> {
// Métodos heredados: findAll(), findById(), save(), delete()
}Función: Proporciona operaciones CRUD automáticas gracias a Spring Data JPA.
ProductController.java implementa los endpoints REST:
@RestController
@RequestMapping("/api/products")
public class ProductController {
@Autowired
private ProductRepository productRepository;
@GetMapping
public List<Product> getAllProducts() {...}
@GetMapping("/{id}")
public ResponseEntity<Product> getProductById(@PathVariable Long id) {...}
@PostMapping
public ResponseEntity<Product> createProduct(@RequestBody Product product) {...}
@PutMapping("/{id}")
public ResponseEntity<Product> updateProduct(...) {...}
@DeleteMapping("/{id}")
public ResponseEntity<Void> deleteProduct(@PathVariable Long id) {...}
}Función: Expone los endpoints HTTP y coordina las operaciones de la aplicación.
Define la estructura de la interfaz de usuario con:
- Formulario para crear/editar productos
- Tabla para visualizar la lista de productos
- Integración con archivos CSS y JavaScript
Aplica estilos visuales a la interfaz:
- Disposición responsive
- Esquema de colores
- Estilos de formularios y tablas
Implementa la lógica interactiva:
- Comunicación con la API REST
- Actualización dinámica de la interfaz
- Gestión del formulario y validación
El archivo application.properties contiene la configuración principal:
# Configuración de la base de datos
spring.datasource.url=jdbc:mysql://${DB_HOST:localhost}:${DB_PORT:3306}/${DB_NAME:api_database}
spring.datasource.username=${DB_USERNAME:root}
spring.datasource.password=${DB_PASSWORD:password}
# JPA/Hibernate
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect
spring.jpa.show-sql=true
# Server
server.port=8080Función: Define la configuración de conexión a la base de datos y comportamiento de la aplicación.
El flujo de control en la aplicación sigue un patrón MVC:
- Las peticiones HTTP llegan al Controlador
- El controlador utiliza el Repositorio para acceder a los datos
- El repositorio interactúa con la base de datos a través de operaciones JPA
- Los datos se devuelven como Modelos en formato JSON
- El Frontend muestra los datos y permite la interacción del usuario └── 📂 com/anabelen/api/ │ │ │ ├── 📂 controller/ │ │ │ │ └── 📄 ProductController.java │ │ │ ├── 📂 model/ │ │ │ │ └── 📄 Product.java │ │ │ ├── 📂 repository/ │ │ │ │ └── 📄 ProductRepository.java │ │ │