Saltar al contenido

¿Cómo habilitar o deshabilitar condicionalmente trabajos programados en Spring?

Solución:

@Component
public class ImagesPurgeJob implements Job {

    private Logger logger = Logger.getLogger(this.getClass());

    @Value("${jobs.mediafiles.imagesPurgeJob.enable}")
    private boolean imagesPurgeJobEnable;

    @Override
    @Transactional(readOnly=true)
    @Scheduled(cron = "${jobs.mediafiles.imagesPurgeJob.schedule}")
    public void execute() {

         //Do something
        //can use DAO or other autowired beans here
        if(imagesPurgeJobEnable){

            Do your conditional job here...

        }
    }
}

Puede agrupar métodos de programación por condiciones en número de servicios e iniciarlos así:

@Service
@ConditionalOnProperty("yourConditionPropery")
public class SchedulingService {

@Scheduled
public void task1() {...}

@Scheduled
public void task2() {...}

}

Spring Boot proporciona @ConditionalOnProperty, que sería perfecto si estuviera usando Spring Boot. Esta anotación es una especialización de @Conditional, introducida con Spring 4.0.0.

Suponiendo que solo está usando Spring “regular” y no Spring Boot, podría crear su propia implementación de Condición para usar con @Conditional que imitaría @ConditionalOnProperty de Spring Boot.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *