Wstrzyknięcie wartości zewnętrznej do adnotacji Spring

Zastanawiałem się nad funkcją Java, która ocenia wartości adnotacji w czasie kompilacji i wydaje się, że naprawdę utrudnia trudne wartości adnotacji zewnętrznych.

Nie jestem jednak pewien, czy jest to rzeczywiście niemożliwe, więc docenię wszelkie sugestie lub ostateczne odpowiedzi na ten temat.

Co więcej, próbuję udostępnić wartość adnotacji, która kontroluje opóźnienia między zaplanowanymi wywołaniami metod na wiosnę, np .:

public class SomeClass {

    private Properties props;
    private static final long delay = 0;

    @PostConstruct
    public void initializeBean() {
        Resource resource = new ClassPathResource("scheduling.properties");
        props = PropertiesLoaderUtils.loadProperties(resource);
        delay = props.getProperties("delayValue");
    }

    @Scheduled(fixedDelay = delay)
    public void someMethod(){
        // perform something
    }
}

Przypuszczam, żescheduling.properties znajduje się w ścieżce klasy i zawiera klucz właściwościdelayValue wraz z odpowiadającą jej długą wartością.

Teraz ten kod ma oczywiste błędy kompilacji, ponieważ próbujemy przypisać wartość dofinal zmienna, ale jest to obowiązkowe, ponieważ nie możemy przypisać zmiennej do wartości adnotacji, chyba że tak jeststatic final.

Czy jest jakiś sposób obejścia tego? Myślałem o niestandardowych adnotacjach Springa, ale główny problem pozostaje - jak przypisać zewnętrzną wartość do adnotacji?

Każdy pomysł jest mile widziany.

EDYCJA: Mała aktualizacja - integracja kwarcu jest przesadna w tym przykładzie. Potrzebujemy tylko okresowego wykonywania z sub-minutową rozdzielczością i to wszystko.

questionAnswers(5)

yourAnswerToTheQuestion