Я думал о функции 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 для этого примера является излишней. Нам просто нужно периодическое выполнение с разрешением менее -минут, и все.