2016-03-24 21 views
6

Spring'in @Scheduledcron yapılandırmasında bir propertyClass gelen bir alıcı (hatta bir değişkeni) aramak için bir yolu var mı? Aşağıdaki derleme değildir:Bahar Boot @Scheduled cron

@Scheduled(cron = "${cron.scheduling}") 
+0

sonra ne, bu değeri alır fasulye oluşturarak cron sınıfa fasulye Autowiring dersiniz? – mugua

+0

propertyClass bir fasulye mi yoksa statik yöntemler içeren bir sınıf mı? –

+0

@KenBekov bir fasulye. – ltalhouarne

cevap

5

Kısa cevap - bu yaklaşıma uygun olmayan var kutunun dışında.

@Scheduled ek açıklamasında "cron ifadesi" olarak iletilen değer, StringValueResolver arabiriminin bir örneğini kullanarak ScheduledAnnotationBeanPostProcessor sınıfında işlenir.

StringValueResolver kutudan çıktığı 3 uygulamaları var - Placeholder için (örn $ {}) Embedded değerleri ve Static Strings için - Eğer aradığınızı elde edebilirsiniz hiçbiri.

Eğer özelliklerini kullanarak her ne pahasına önlemek için varsa

ek açıklamada, ek açıklama kurtulmak ve programlı her şeyi inşa tutucusu. Sen @Scheduled açıklama aslında ne olduğu, ScheduledTaskRegistrar kullanarak görevleri kaydedebilirsiniz.

ben çalışır ve testleri geçen basit çözüm ne olursa olsun kullanmak önerir

.

+0

yerine bir değişken veya getter kullanmakla ilgili. Bu benim fark ettiğim şey. Teşekkürler! – ltalhouarne

-2
@Component 
public class MyReminder { 

    @Autowired 
    private SomeService someService; 

    @Scheduled(cron = "${my.cron.expression}") 
    public void excecute(){ 
     someService.someMethod(); 
    } 
} 

/src/main/resources/application.properties

yılında:

@Scheduled(cron = propertyClass.getCronProperty()) veya @Scheduled(cron = variable)

Özelliği doğrudan kapma önlemek istiyoruz

my.cron.expression = 0 30 9 * * ? 
+0

Bu benim geçerli kodum. Sorum, "$ {my.cron.expression}" yerine – ltalhouarne

İlgili konular