PULSOFT

Descargar los archivos aspectjweaver-1.9.5.jar y copiarlos en la carpeta lib.

🧪 Enunciado: AOP con una Calculadora

Crea un pequeño proyecto en Java utilizando Spring con soporte para Aspectos (AOP). El objetivo es interceptar los métodos de una clase Calculadora antes y después de su ejecución para mostrar mensajes informativos.

🔧 Requisitos

  • Clase Calculadora:
    • Debe ser un componente (@Component) de Spring.
    • Implementa dos métodos:
      • public void sumar(int a, int b) → imprime por consola el resultado de la suma.
      • public void restar(int a, int b) → imprime por consola el resultado de la resta.
  • Clase Aspecto:
    • Define un aspecto con @Aspect y @Component.
    • Añade un método con la anotación @Before que se ejecute antes de cualquier método de la clase Calculadora, mostrando el mensaje: "Mensaje antes de los cálculos".
    • Añade un método con la anotación @After que se ejecute después de cualquier método de la clase Calculadora, mostrando el mensaje: "Mensaje después de los cálculos".
  • Clase Config:
    • Usa @Configuration, @ComponentScan y @EnableAspectJAutoProxy para activar el escaneo de componentes y el soporte de AOP.
  • Clase Principal:
    • Usa AnnotationConfigApplicationContext para iniciar el contexto Spring manualmente.
    • Obtiene el bean Calculadora y llama a los métodos sumar y restar.
Imagen del programa

📄 Enunciado: AOP con Lectura de Archivos

Crea una aplicación de consola en Java utilizando Spring y AOP para interceptar el proceso de lectura de datos. El objetivo es mostrar mensajes antes y después de ejecutar el método que simula la lectura de un archivo.

🔧 Requisitos

  • Clase LectorArchivos:
    • Debe ser un componente (@Component) de Spring.
    • Incluye un método llamado leerDatos() que simule la lectura de un archivo con un Thread.sleep(2000) y muestre un mensaje al final indicando que la lectura ha terminado.
  • Clase Aspecto:
    • Define un aspecto con @Aspect y @Component.
    • Crea un método con @Before que se ejecute antes del método leerDatos y muestre el mensaje: "Tiempo que pasó antes".
    • Crea un método con @After que se ejecute después del método leerDatos y muestre el mensaje: "Tiempo que pasó después".
  • Clase Config:
    • Debe incluir las anotaciones @Configuration, @ComponentScan y @EnableAspectJAutoProxy para habilitar AOP.
  • Clase Principal:
    • Usa AnnotationConfigApplicationContext para iniciar el contexto.
    • Obtiene el bean LectorArchivos y ejecuta su método leerDatos().
Imagen del programa

🧪 Enunciado: AOP con gestión de acceso a documentos

Crea un pequeño proyecto en Java con Spring y soporte para AOP. El objetivo es interceptar llamadas relacionadas con la visualización y edición de documentos, simulando una gestión de permisos o auditoría.

🔧 Requisitos

📄 Clase DocumentoManager
  • Debe ser un componente (@Component) de Spring.
  • Contendrá dos métodos públicos:
    • public void verDocumento(String titulo) → imprime: "Visualizando documento: <titulo>"
    • public void editarDocumento(String titulo) → imprime: "Editando documento: <titulo>"
🛡️ Clase AspectoSeguridad
  • Marca la clase como @Aspect y @Component.
  • Antes de cualquier acceso (verDocumento o editarDocumento), muestra el mensaje: "🔐 Comprobando permisos..."
  • Después de cada operación, muestra el mensaje: "✅ Operación registrada en el sistema de auditoría"
🛠️ Clase Config
  • Usa @Configuration, @ComponentScan, y @EnableAspectJAutoProxy.
▶️ Clase Principal
  • Usa AnnotationConfigApplicationContext para iniciar el contexto.
  • Obtiene el bean DocumentoManager.
  • Llama a ambos métodos pasando nombres de documentos distintos.
Imagen del programa

🧪 Enunciado: AOP para simular tiempos de ejecución

Crea un proyecto con Spring y AOP que permita medir el tiempo que tarda en ejecutarse un método, útil para simular tareas costosas como cargar archivos, procesar datos, etc.

🔧 Requisitos

⏳ Clase ProcesadorDatos
  • Debe estar anotada con @Component.
  • Implementa un método:
    public void procesar()
    • Dentro del método, simula una tarea costosa con Thread.sleep(1500) y luego imprime:
      "Procesamiento completado"
🕵️ Clase AspectoTiempo
  • Anota la clase con @Aspect y @Component.
  • Usa una anotación @Around para interceptar la ejecución del método procesar.
  • Mide el tiempo antes y después de la ejecución e imprime algo similar a:
    "Tiempo de ejecución: 1503 ms"
🛠️ Clase Config
  • Usa @Configuration, @ComponentScan, y @EnableAspectJAutoProxy.
▶️ Clase Principal
  • Usa AnnotationConfigApplicationContext.
  • Obtiene el bean ProcesadorDatos y llama a su método procesar().
Imagen del programa

🧪 Enunciado: AOP para control de acceso

Crea una aplicación de consola en Java utilizando Spring y AOP. El objetivo es simular un control de acceso a métodos restringidos, interceptando su ejecución para mostrar mensajes informativos antes de que se ejecuten.

🔧 Requisitos

📌 Clase AccesoSistema:

  • Marca esta clase con @Component.
  • Implementa dos métodos void:
    • public void accederZonaPrivada() → Imprime: "Accediendo a la zona privada...".
    • public void accederZonaPublica() → Imprime: "Accediendo a la zona pública...".

📌 Clase AspectoSeguridad:

  • Marca la clase con @Aspect y @Component.
  • Define un aspecto que:
    • Use @Before para interceptar únicamente la ejecución de accederZonaPrivada() y mostrar el mensaje: "⚠️ Verificando permisos para zona privada".
    • No es necesario interceptar accederZonaPublica().

📌 Clase Config:

  • Usa @Configuration, @ComponentScan y @EnableAspectJAutoProxy.

📌 Clase Principal:

  • Usa AnnotationConfigApplicationContext para iniciar Spring.
  • Obtén el bean AccesoSistema y llama a los métodos accederZonaPrivada() y accederZonaPublica().
Imagen del programa

🧪 Ejercicio: Registro de Tiempo de Ejecución de Métodos de Servicio

Crea una aplicación Spring Boot con un servicio que tenga varios métodos simulando operaciones de negocio (por ejemplo: generar informes, procesar datos, etc.).

Usa Spring AOP para crear un aspecto que intercepte todos los métodos del servicio e imprima en consola cuánto tiempo tarda cada método en ejecutarse.

Requisitos:

  • Define una interfaz ServicioOperaciones y una implementación con al menos 3 métodos que tarden un poco en ejecutarse (usa Thread.sleep()).
  • Crea un aspecto con @Around que intercepte las ejecuciones y registre el tiempo de inicio y fin.
  • Imprime en consola el nombre del método y el tiempo de ejecución en milisegundos.

Este ejercicio te ayudará a entender el uso de aspectos alrededor de métodos y cómo aplicar lógica transversal como el logging o el profiling de manera no invasiva.

Imagen del programa

🛠️ Ejercicio AOP - Servicios de Producto

En este ejercicio, crearás una aplicación de Spring que maneje servicios de productos utilizando AOP (Aspect-Oriented Programming). La aplicación debe permitir insertar, listar, actualizar y borrar productos mientras se captura información sobre los métodos ejecutados utilizando un Aspect. 📦

📋 Requerimientos

Deberás implementar lo siguiente:

  1. Clase Producto: Crea una clase Producto con las siguientes propiedades:
    • id: un identificador único para el producto (tipo int). 🔢
    • nombre: el nombre del producto (tipo String). 🏷️
    • precio: el precio del producto (tipo double). 💵
  2. Clase Servicio: Crea una clase Servicio con los siguientes métodos:
    • insertarProducto(Producto producto): método para insertar un producto. ➕
    • listarProducto(Producto producto): método para listar un producto. 📜
    • actualizarProducto(Producto producto): método para actualizar un producto. 🔄
    • borrarProducto(Producto producto): método para borrar un producto. ❌
  3. Configuración de Spring: Configura Spring para utilizar componentes y habilitar el uso de AOP:
    • Utiliza @ComponentScan para que Spring gestione tus clases como beans. 🧰
    • Habilita AOP usando la anotación @EnableAspectJAutoProxy. ⚙️
  4. Aspecto AOP: Crea un aspecto usando @Aspect para interceptar los métodos de la clase Servicio:
    • Usa la anotación @Around para capturar la ejecución de los métodos de Servicio. 🔍
    • Imprime el nombre del método y los parámetros que recibe cada vez que se ejecute un método de Servicio. 🖨️
  5. Clase Main: Crea una clase Main para ejecutar los métodos de la clase Servicio y probar su funcionamiento con varios productos. 🚀

📝 Nota: El objetivo de este ejercicio es practicar el uso de AOP para capturar la ejecución de métodos y ver cómo funcionan los aspectos en Spring. Además, se debe aprender a utilizar componentes, configurar beans, y trabajar con la creación de clases de servicio en una aplicación Spring. 🎯

Imagen del programa