Внедрение внешнего значения в аннотацию Spring

Я думал о функции Java, которая оценивает значения аннотаций во время компиляции -, и, похоже, это действительно затрудняет экстернализацию значений аннотаций.

Однако я не уверен, что это на самом деле невозможно, поэтому я был бы признателен за любые предложения или окончательные ответы по этому поводу.

Более того, я пытаюсь внедрить значение аннотации, которое контролирует задержки между запланированными вызовами методов в Spring, например.:

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
    }
}

Предположим, что scheduling.propertiesнаходится в пути к классам и содержит ключ свойства delayValueвместе с соответствующим длинным значением.

Теперь этот код имеет очевидные ошибки компиляции, так как мы пытаемся присвоить значение переменной final, но это обязательно, так как мы не можем присвоить переменной значение аннотации, если это не static final.

Есть ли способ обойти это? Я думал о пользовательских аннотациях Spring, но основная проблема остается -, как присвоить внешнее значение аннотации?

Любая идея приветствуется.

РЕДАКТИРОВАТЬ :Небольшое обновление -Интеграция с Quartz для этого примера является излишней. Нам просто нужно периодическое выполнение с разрешением менее -минут, и все.

25
задан Jonik 8 May 2014 в 12:43
поделиться