如何通过Spring Expression从配置属性为注解字段传递值?
Spring Expression在@RetryableTopic中传递配置属性的写法验证
- 完全可以通过Spring Expression(SpEL)从配置属性中为
@RetryableTopic的字段传递值,你使用的autoCreateTopics = "#{@kafkaProperties.autoCreateTopics}"写法是正确的。 - 关于
backoff的写法:- 如果
kafkaProperties.backoff本身是Long类型,直接写#{@kafkaProperties.backoff}即可,无需手动调用parseLong,Spring会自动适配类型。 - 如果配置中的
backoff是字符串格式的数字,你的写法是有效的,但可以简化为#{@kafkaProperties.backoff as T(java.lang.Long)},显式完成类型转换更清晰。
- 如果
修正后的代码示例:
@RetryableTopic( autoCreateTopics = "#{@kafkaProperties.autoCreateTopics}", // 当backoff为Long类型时使用 backoff = @Backoff(delay = "#{@kafkaProperties.backoff}") // 当backoff为字符串数字时使用 // backoff = @Backoff(delay = "#{@kafkaProperties.backoff as T(java.lang.Long)}") )
补充:Spring的SpEL支持自动类型转换,多数情况下字符串数字可以直接赋值给long类型字段,无需显式转换,但显式声明类型能避免潜在的类型不匹配问题。
内容的提问来源于stack exchange,提问作者BadChanneler
相关产品推荐
相关产品推荐

