将 SpEL 输出转换为 long 以用作注释参数
convert SpEL output to long to use as an annotation argument
目前,我可以使用 SpEL
的字符串参数,如下所示:
@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
编辑:
我遇到过很多类似的SpEL
问题,但是没有适用于我的案例的解决方案。
您可以使用fixedDelayString with spring expression language
@Scheduled(fixedDelayString = "#{parameterService.findByCode('fixedDelay')}")
@Scheduled(fixedDelayString = "#{parameterService.findByCode('fixedDelay')}"))
目前,我可以使用 SpEL
的字符串参数,如下所示:
@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
编辑:
我遇到过很多类似的SpEL
问题,但是没有适用于我的案例的解决方案。
您可以使用fixedDelayString with spring expression language
@Scheduled(fixedDelayString = "#{parameterService.findByCode('fixedDelay')}")
@Scheduled(fixedDelayString = "#{parameterService.findByCode('fixedDelay')}"))