Crear clases en micronaut


En este post veremos cómo crear una clase e implementarla en micronaut, usaremos java con maven para entender este concepto.

oscar Escrito por oscar 17 March 2023 687 0

Precondiciones

Definiciones

Introspección

La introspección en programación se refiere a la capacidad de un programa de examinar y modificar su propia estructura y comportamiento en tiempo de ejecución. En otras palabras, se trata de la capacidad de un programa para "mirar hacia adentro" y examinar sus propias características.

Introspección en Micronaut

Micronaut es un framework moderno de desarrollo de aplicaciones en Java, que también ofrece capacidades de introspección. Al igual que otros lenguajes y frameworks, la introspección en Micronaut permite examinar y modificar las características del programa en tiempo de ejecución.

Una forma común de introspección en Micronaut es utilizando la anotación @Introspected en una clase, lo que permite a Micronaut generar código en tiempo de compilación para acceder a los campos, métodos y constructores de la clase. Esto puede ser especialmente útil para la serialización y deserialización de objetos, ya que permite a Micronaut generar código de mapeo de objetos de forma automática.

Además, Micronaut también proporciona una serie de utilidades para la introspección en tiempo de ejecución, como la clase BeanIntrospection, que permite examinar los métodos y campos de una clase de manera programática, y la clase ReflectionUtils, que permite acceder a la información de las clases y métodos mediante reflexión.

Documentación oficial de Micronaut

La siguiente practica la vamos a realizar guiándonos de la documentación oficial de Micronauta (Introspección).

Crear una clase en Micronaut

Para entender este concepto, vamos a usar un ejemplo que reutilizaremos a futuro en los próximos articulo.

Diagrama UML ejemplo

Podemos observar que son tres clases que vamos a crear y a inyectar con la introspección en Micronaut. Este ejemplo que se esta creado con los artículos tiene como objetivo crear un listado de directorio telefónico, esto lo explicaremos en futuros post, por el momento tengamos en cuenta lo siguiente:

  • La clase contactos tiene los campos básicos de un contacto y esta clase no tiene relaciones con otras clases.
  • La clase error, crea una relación del error y un mensaje.
  • La clase respuesta tiene un mensaje y la lista de los errores controlados que quiere mostrar en la respuesta.

Estructura del código

Crearemos un proyecto nuevo como lo explicamos en Crear primer proyecto con micronaut, adicionalmente vamos a crear un paquete (package) de java llamado valueObjects, en este paquete crearemos lo siguiente:

  • Creamos el paquete "command", donde se almacenaran las clases que se usan para recibir las peticiones.
  • Creamos el paquete "dto", que son las clases de respuesta.
C:.
│   .gitignore
│   micronaut-cli.yml
│   mvnw
│   mvnw.bat
│   pom.xml
│   README.md
│
├───.mvn
│
├───src
│   ├───main
│   │   ├───java
│   │   │   └───com
│   │   │       └───codigoelectronica
│   │   │           │   Application.java
│   │   │           │
│   │   │           └───valueobjects
│   │   │               ├───command
│   │   │               │       Contactos.java
│   │   │               │
│   │   │               └───dto
│   │   │                       Error.java
│   │   │                       Respuesta.java
│   │   │
│   │   └───resources
│   │           application.yml
│   │           logback.xml
│   │
│   └───test
│
└───target

Estructura de las clases

Vamos a construir las clases, en este post explica la Estructura de una Clase en Java (aknowledgejourney.com).

La primera clase a construir es la de contactos, guiándonos del diagrama UML crearemos lo siguiente:

Clase Contactos

package com.codigoelectronica.valueobjects.command;

import io.micronaut.core.annotation.Introspected;

@Introspected // 1
public class Contactos { // 2

    // 3
    private String nombre;
    private String apellido;
    private String email;
    private String telefono;

    // 4
    public Contactos() {
    }

    // 5
    public String getNombre() {
        return this.nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public String getApellido() {
        return this.apellido;
    }

    public void setApellido(String apellido) {
        this.apellido = apellido;
    }

    public String getEmail() {
        return this.email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getTelefono() {
        return this.telefono;
    }

    public void setTelefono(String telefono) {
        this.telefono = telefono;
    }

    // 6
    @Override
    public String toString() {
        return "{" +
                " nombre='" + getNombre() + "'" +
                ", apellido='" + getApellido() + "'" +
                ", email='" + getEmail() + "'" +
                ", telefono='" + getTelefono() + "'" +
                "}";
    }

}
  1. Usamos la etiqueta de introspección (@Introspected).
  2. Creamos la clase contactos.
  3. Creamos los atributos de la clase.
  4. Creamos el constructor.
  5. Creamos los métodos getters y setters.
  6. Sobrescribimos el metodo toString.

Clase Error

package com.codigoelectronica.valueobjects.dto;

import io.micronaut.core.annotation.Introspected;

@Introspected
public class Error {

    private String codigo;
    private String mensaje;

    public Error() {
    }

    public String getCodigo() {
        return this.codigo;
    }

    public void setCodigo(String codigo) {
        this.codigo = codigo;
    }

    public String getMensaje() {
        return this.mensaje;
    }

    public void setMensaje(String mensaje) {
        this.mensaje = mensaje;
    }

    @Override
    public String toString() {
        return "{" +
                " codigo='" + getCodigo() + "'" +
                ", mensaje='" + getMensaje() + "'" +
                "}";
    }

}

Clase Respuesta

package com.codigoelectronica.valueobjects.dto;

import java.util.List;

import io.micronaut.core.annotation.Introspected;

@Introspected
public class Respuesta {
    private String mensaje;
    private List<Error> errores;

    public Respuesta() {
    }

    public String getMensaje() {
        return this.mensaje;
    }

    public void setMensaje(String mensaje) {
        this.mensaje = mensaje;
    }

    public List<Error> getErrores() {
        return this.errores;
    }

    public void setErrores(List<Error> errores) {
        this.errores = errores;
    }

    @Override
    public String toString() {
        return "{" +
                " mensaje='" + getMensaje() + "'" +
                ", errores='" + getErrores() + "'" +
                "}";
    }

}

Otras referencias

▷ Diagrama de clases. Teoria y ejemplos. (diagramasuml.com)

¿Cuáles Son Los Seis Tipos De Relaciones En Los Diagramas De Clases UML? - Visual Paradigm Blog Español (visual-paradigm.com)


Comentario

Debe aceptar antes de enviar