Risposta breve - non è possibile e fuori dalla scatola.
Il valore passato come "espressione cron" nell'annotazione @Scheduled
viene elaborato nella classe ScheduledAnnotationBeanPostProcessor
utilizzando un'istanza dell'interfaccia StringValueResolver
.
StringValueResolver
ha 3 implementazioni fuori dalla scatola - per Placeholder
(ad esempio $ {}), per Embedded
valori e per Static
Strings - nessuno dei quali può raggiungere ciò che stai cercando.
Se è necessario evitare a tutti i costi l'utilizzo del segnaposto delle proprietà nell'annotazione, eliminare l'annotazione e creare tutto a livello di programmazione. È possibile registrare le attività utilizzando ScheduledTaskRegistrar
, che è ciò che fa effettivamente l'annotazione @Scheduled
.
Suggerirò di utilizzare qualunque sia la soluzione più semplice che funziona e supera i test.
cosa dire della creazione di un bean che ottiene quel valore, quindi dell'autowiring del bean nella classe cron? – mugua
È propertyClass un bean o solo una classe che contiene metodi statici? –
@KenBekov un fagiolo. – ltalhouarne