Spring Framework es la plataforma más utilizada que se lanzó en octubre de 2002 para crear aplicaciones basadas en web efectivas y eficientes. Además, el marco Spring Boot se lanzó en abril de 2014 para superar el engorroso esfuerzo de la configuración manual. La moto principal de Spring Boot fue lograr la función de configuración automática. Con la ayuda de esta y otras características, podemos crear una aplicación web Spring independiente. El desarrollo y la gestión de una aplicación son los dos aspectos más importantes del ciclo de vida de la aplicación. Es muy importante saber qué está pasando debajo de la aplicación. Además, cuando ponemos la aplicación en producción, administrarla gradualmente se vuelve de vital importancia. Por lo tanto, siempre se recomienda monitorear la aplicación tanto en la fase de desarrollo como en la fase de producción.
Ventajas de Monitorear/Administrar la Aplicación
- Aumenta la satisfacción del cliente.
- Reduce el tiempo de inactividad.
- Aumenta la productividad.
- Mejora la Gestión de la Ciberseguridad.
- Aumenta la tasa de conversión.
Bota de resorte – Actuador
- Con la ayuda de Spring Boot, podemos lograr los objetivos anteriores.
- La dependencia ‘Actuator’ de Spring Boot se usa para monitorear y administrar la aplicación web Spring.
- Podemos usarlo para monitorear y administrar la aplicación con la ayuda de puntos finales HTTP o con JMX.
Para usar el ‘Actuador’, agregue la siguiente dependencia en la compilación del proyecto de su aplicación.
Maven -> pom.xml <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> </dependencies>
Gradle -> build.gradle dependencies { implementation 'org.springframework.boot:spring-boot-starter-actuator' }
pom.xml (Configuración de la Aplicación Web)
XML
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.6.4</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>sia</groupId> <artifactId>GFG-ACTUATOR</artifactId> <version>0.0.1-SNAPSHOT</version> <name>GFG-ACTUATOR</name> <description>Spring Boot Starter Actuator</description> <properties> <java.version>11</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <excludes> <exclude> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </exclude> </excludes> </configuration> </plugin> </plugins> </build> </project>
GfgActuatorApplication.java (Bootstrapping de la aplicación)
Java
package gfg; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class GfgActuatorApplication { public static void main(String[] args) { SpringApplication.run(GfgActuatorApplication.class, args); } }
UserEntity.java (clase de entidad que representa los datos del modelo)
- Esta clase actúa como un bean Java simple cuyas propiedades son devueltas como respuesta JSON por el método get() de la API REST.
- La biblioteca ‘Lombok’ se usa para generar métodos GETTER/SETTER automáticamente en tiempo de ejecución usando la anotación ‘ @Data ‘.
- La anotación ‘ @RequiredArgsConstructor ‘ se utiliza para generar un constructor de cero argumentos y si están presentes los campos final o ‘ @NonNull’ , se crea el constructor de argumentos respectivo.
- Para agregar la biblioteca ‘Lombok’ en su aplicación, agregue la siguiente dependencia en la compilación del proyecto de su aplicación.
Maven -> pom.xml <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency>
La anotación ‘@Component’ se usa para que este bean se registre automáticamente en el contexto de la aplicación de Spring.
Java
package gfg; import lombok.Data; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; @Component @Data @RequiredArgsConstructor public class UserEntity { String id = "1"; String name = "Darshan.G.Pawar"; String userName = "@drash"; String email = "drash@geek"; String pincode = "422-009"; }
RESTfulController.java (Un controlador API REST)
El método get() de este controlador usa el bean UserEntity para devolver la respuesta JSON. El bean UserEntiy se subcontrata a través de la anotación ‘ @Autowired ‘ que se registró en el contexto de la aplicación de Spring.
Java
package gfg; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/get") public class RESTfulController { @Autowired UserEntity entity; @GetMapping("/data") public UserEntity getEntity() { return entity; } }
Producción:
Aquí, la extensión JSON Formatter Chrome se usa para analizar automáticamente el cuerpo JSON. Además, se requerirá que funcione con ‘Actuador’.
Trabajar con el actuador Spring Boot
Para acceder a los servicios del ‘Actuador’, tendrá que usar el punto final HTTP, ya que se vuelve confiable para trabajar con él. El punto final predeterminado es ‘/actuador’.
Ejemplo:
También puede cambiar el punto final predeterminado agregando lo siguiente en el archivo application.properties.
management.endpoints.web.base-path=/details
Puede hacer clic en estos enlaces anteriores y ver la información respectiva. Además, puede activar otras ID de actuador y usarlas después de ‘/actuador’ para ver más información. Por ejemplo, la ID de ‘salud’ está activada de forma predeterminada. Por lo tanto, puede hacer clic en el enlace de la imagen o usar directamente ‘http://localhost:8080/actuator/health’.
‘UP’ significa que la salud de la aplicación es buena. Hay un total de 25 identificaciones, de las cuales las más utilizadas se enumeran aquí:
IDENTIFICACIÓN |
Descripción |
---|---|
frijoles | Muestra una lista completa de todos los frijoles Spring en su aplicación. |
cachés | Expone los cachés disponibles. |
condiciones | Muestra las condiciones que se evaluaron en las clases de configuración y autoconfiguración y las razones por las que coincidieron o no. |
salud | Muestra información sobre el estado de la aplicación. |
seguimiento http | Muestra información de seguimiento HTTP (de forma predeterminada, los últimos 100 intercambios de solicitud-respuesta HTTP). Requiere un bean HttpTraceRepository. |
madereros | Muestra y modifica la configuración de registradores en la aplicación. |
asignaciones | Muestra una lista recopilada de todas las rutas @RequestMapping. |
sesiones | Permite la recuperación y eliminación de sesiones de usuario de un almacén de sesiones respaldado por Spring Session. Requiere una aplicación web basada en servlet que use Spring Session. |
volcado de subprocesos | Realiza un volcado de subprocesos. |
Incluyendo ID/puntos finales
De forma predeterminada, todos los ID se configuran como falsos, excepto ‘salud’. Para incluir un ID, use la siguiente propiedad en el archivo application.properties.
management.endpoint.<id>.enabled Example -> management.endpoint.metrics.enabled=true
O bien, puede enumerar todos los ID que desea incluir separados por una coma.
management.endpoints.web.exposure.include=metrics,info
Esto incluirá solo métricas e ID de información y excluirá todos los demás (‘salud’ también). Para agregar/incluir toda la información de identificación sobre su aplicación, puede hacerlo en el archivo application.properties simplemente agregando lo siguiente:
management.endpoints.web.exposure.include=*
Producción:
Excluyendo ID/puntos finales
Para excluir un ID o punto final, use la siguiente propiedad y enumere los ID respectivos separados por una coma en el archivo application.properties.
management.endpoints.web.exposure.exclude Example -> management.endpoints.web.exposure.exclude=info
Utilice ‘*’ en lugar de ID en la propiedad para excluir todos los ID o puntos finales.
Notas:
- Antes de configurar management.endpoints.web.exposure.include, asegúrese de que los actuadores expuestos no contengan información confidencial.
- Deben estar protegidos colocándolos detrás de un firewall o están protegidos por algo como Spring Security.
Publicación traducida automáticamente
Artículo escrito por pawardarshan461 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA