2016-04-04 33 views
4

Uygulamam, bir özellik dosyasından bazı cron kalıplarını yükler. Böyle @Scheduled ek açıklama kullanarak Im:Cron zamanlayıcı “devre dışı bırak desen”

@Scheduled(cron = "${config.cronExpression:0 0 11,23 * * *}")

Şimdi bir cron desen wich çalıştırmak asla girmek olacaktır bazı görevleri ve en kolay çözüm devre dışı bırakmak istediğiniz. Bunu yapmak için, geçmişte yalnızca belirli bir günde yürüten bir cron ifadesi kullanmayı düşündüm. Fakat ne yazık ki Bahar cron ifadeleri geçmişte bir yıl veya tarih eklemeye izin vermiyor.

Hiçbir zaman çalışmayacak herhangi bir desen var mı?

+1

Bunun yardımcı olup olmadığından emin değilim, ancak yerel olarak cron ifadesini 'none' başarıyla kullandığımızı biliyorum. Ama bu bir korsanlık olabilir ... Diğer insanlar 31 Şubat veya 31 Aralık 2099 kullanmanın ... http://stackoverflow.com/questions/8324306/cron-job-that-will-never-execute http: // stackoverflow.com/questions/13835221/quartz-cron-expression-that-will-never-execute/13938099#13938099 – samjaf

cevap

0

Spring Boot'da, zamanlanmış bir işi devre dışı bırakmak için Spring Bean yönteminde kullanın.

@Service 
public class ... { 

    @Profile("prod") 
    @Scheduled(cron="${scheduler.cron}") 
    public void yourJob() { 
     // ... job enabled only for PROD environment 
    } 

} 

Bkz. https://jira.spring.io/browse/SPR-10376.

+0

Elbette, bu işe yarıyor mu? [Belgeler] (https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/context/annotation/Profile.html), "Profil" in yalnızca @ Fasulye yöntemleri. Henüz denemek için zamanım olmadı. – eztam

+0

Evet, '@ Profile' kullanmak, onu Spring Bean’te, yani' @ Service' '' Component'' kullanmak demektir. –