Resilience4j Retry配置忽略含$的异常时Groovy模板报错解决
解决YAML中Resilience4j配置含$的异常类名启动报错问题
问题核心是YAML解析时,$会被Spring当作属性占位符的起始标识,导致$BadRequest被误认为要读取名为BadRequest的配置属性,从而抛出缺失属性的错误。
有两种可靠的解决方式:
1. 用单引号包裹全类名
YAML中,单引号包裹的内容会被当作纯文本,不会解析其中的$为占位符。修改后的配置如下:
resilience4j.retry: instances: testA: maxAttempts: 5 waitDuration: 100ms ignoreExceptions: - 'org.springframework.web.reactive.function.client.WebClientResponseException$BadRequest' - java.net.ConnectException - java.lang.ArithmeticException
2. 用双引号配合转义符
如果偏好双引号,可以用\转义$,此时\$会被解析为普通的$字符:
resilience4j.retry: instances: testA: maxAttempts: 5 waitDuration: 100ms ignoreExceptions: - "org.springframework.web.reactive.function.client.WebClientResponseException\$BadRequest" - java.net.ConnectException - java.lang.ArithmeticException
推荐第一种单引号的方式,写法更简洁,也避免了转义符的额外处理,能确保Resilience4j正确识别嵌套异常类的全限定名。
内容的提问来源于stack exchange,提问作者Adriano
相关产品推荐
相关产品推荐

