将SpEL输出转换为long用作注释参数

问题描述 投票:4回答:2

目前,我可以使用SpEL使用String参数,如下所示:

@Autowired
private ParameterService parameterService;

@Scheduled(cron = "#{parameterService.findByCode('cron')}")

它工作正常,但是如果我想要一个长常量,它将不起作用:

@Autowired
private ParameterService parameterService;

@Scheduled(fixedDelay = "#{parameterService.findByCode('fixedDelay')}")
//error: incompatible types: String cannot be converted to long

@Scheduled(fixedDelay = Long.parseLong("#{parameterService.findByCode('fixedDelay')}"))
//error: element value must be a constant expression

所以,如何解决?

而且,我不能给Long,它只接受long

edit:

我经历了许多类似的SpEL问题,但是有针对我的情况的[[no适用解决方案。

java spring-boot spring-el
2个回答
2
投票
您可以将fixedDelayStringspring expression language一起使用

@Scheduled(fixedDelayString = "#{parameterService.findByCode('fixedDelay')}")


2
投票
改为使用fixedDelayString

@Scheduled(fixedDelayString = "#{parameterService.findByCode('fixedDelay')}"))

© www.soinside.com 2019 - 2024. All rights reserved.