This will delete the page "Explicación"
. Please be certain.
Este es el repositorio utilizado para la sesión 14 de la asignatura Desarrollo Basado en Componentes Distribuidos y Servicios.
El objetivo es probar diferentes funcionalidades de Spring Boot que no se han visto en las sesiones anteriores.
La aplicación que compone el proyecto tiene un único endpoint, en raíz, que responde con diferentes parámetros definidos en el fichero properties.
Perfiles de ejecución
Spring Boot permite tener diferentes perfiles de ejecución, de modo que se carguen diferentes propiedades o funcionalidades en base al perfil seleccionado.
Se puede configurar el perfil mediante la propiedad spring.profiles.active en el properties, por vía programática, directamente en STS [Run -> Run configurations -> Profile] o mediante inyección de variables de entorno
Para crear diferentes ficheros properties es necesarios añadir un sufijo con el nombre del perfil. application.local.properties, application.prod.properties, etc.
Se puede utilizar la anotación @Profile en cualquier @Component para especificar en que perfil se utiliza ese componente.
Ejecución vía terminal
Además de ejecutar directamente la aplicación desde el STS, también puede ser ejecutada por terminal mediante el Maven Plugin de Spring Boot o directamente compilando y ejecutando el fichero jar de la aplicación.
Ejecución con maven
mvn spring-boot:run -Dactive.profile=local
Compilar con perfil específico
mvn clean package spring-boot:repackage -Dactive.profile=local
Compilar sin especificar perfil
mvn -Dmaven.test.skip=true clean install
Ejecutar jar con perfil
java -jar ./target/DBCDS_S14_1-0.0.1-SNAPSHOT.jar --spring.profiles.active=local
Tareas programadas
Spring Boot dispone de un componente para ejecutar tareas programadas llamado scheduling.
Habilita las tareas programadas en la clase principal
@EnableScheduling
Añade una variable al properties para controlar la activación de las tareas programadas. Esto es opcional, pero ayudará a controlar la activación de las tareas programadas en diferentes entornos de ejecución.
app.scheduling.enabled=true
Crea una clase que implemente de SchedulingConfigurer y configura el pool de hilos para la ejecución de las tareas.
@Configuration
public class SchedulerConfig implements SchedulingConfigurer {
private final int POOL_SIZE = 10;
@Override
public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) {
ThreadPoolTaskScheduler threadPoolTaskScheduler = new ThreadPoolTaskScheduler();
threadPoolTaskScheduler.setPoolSize(this.POOL_SIZE);
threadPoolTaskScheduler.setThreadNamePrefix("my-scheduler");
threadPoolTaskScheduler.initialize();
scheduledTaskRegistrar.setTaskScheduler(threadPoolTaskScheduler);
}
}
Crea un componente añade los métodos que se ejecutarán.
@Component
@SuppressWarnings("unused")
public class ScheduledTasks {
@Value("${app.scheduler.enabled}")
private String schedulerEnabled;
@Scheduled(fixedDelay = 300000)
public void runPeriodicTask() {
if(Boolean.parseBoolean(this.schedulerEnabled)) {
System.out.println("running task");
}
}
@Scheduled(cron="0 0 1 * * *")
public void runCronTask() {
if(Boolean.parseBoolean(this.schedulerEnabled)) {
System.out.println("running task");
}
}
}
This will delete the page "Explicación"
. Please be certain.