【发布时间】:2018-06-26 07:21:32
【问题描述】:
我使用 Spring 4。 我像这样运行 Spring 上下文:
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
context.scan(BASE_PACKAGE);
context.refresh();
我使用注入环境变量,例如:
@Value("#{systemEnvironment['ENV_VAR'] ?: 60}")
private int someDelay;
而且效果很好。
问题是如何做到这一点:
@Scheduled(fixedDelayString = "${ENV_VAR ?: 60000}")
public void runSomeTask(){
System.out.println("hello ");
}
现在 spring 抛出异常:
Initialization of bean failed; nested exception is java.lang.IllegalStateException: Encountered invalid @Scheduled method 'runSomeTask': Invalid fixedDelayString value "${ENV_VAR ?: 60000}" - cannot parse into integer
我想我需要创建一个负责处理此类值的 BeanPostProcessor,但我不知道具体是哪一个。
附:开箱即用的 Spring Boot 可以正常工作。
【问题讨论】:
-
Scheduled(fixedDelayString = "("#{systemEnvironment['ENV_VAR'] ?: 60000}")有什么问题? -
@Jens 与
"${ENV_VAR ?: 60000}"相同的异常 -
能否显示异常文本
-
或者,你可以这样做stackoverflow.com/a/2602676/1654233
-
@Jens
Initialization of bean failed; nested exception is java.lang.IllegalStateException: Encountered invalid @Scheduled method 'runSomeTask': Invalid fixedDelayString value "#{systemEnvironment['ENV_VAR'] ?: 60000}" - cannot parse into integer