You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot集成ShedLock后出现UnsatisfiedDependencyException问题排查

问题原因与解决方案

问题原因

  1. 方法逻辑错误:代码里连续两次调用connManager.setDefaultMaxPerRoute(),第一次传入全局连接数配置httpConnMaxTotal,第二次才是路由连接数httpConnMaxPerRoute——这不仅是重复设置,更关键的是如果httpConnMaxTotal在test环境下的值为负数或0,就会直接触发"每个路由的最大值不能为负数或零"的错误。
  2. 配置变量非法:在test或default环境中,httpConnMaxTotal或httpConnMaxPerRoute的配置值未设置为正整数,可能是配置文件遗漏、变量未正确注入,或是默认值设置错误。

解决办法

  • 修正连接管理器配置逻辑:正确区分全局最大连接数和单路由最大连接数的设置方法,代码调整为:
@Profile({"test", "default"})
@Bean(name = "connectionManager")
public PoolingHttpClientConnectionManager connectionManagerTest() {
  PoolingHttpClientConnectionManager connManager = new PoolingHttpClientConnectionManager();
  // 设置全局最大连接总数
  connManager.setMaxTotal(httpConnMaxTotal);
  // 设置每个路由的最大连接数
  connManager.setDefaultMaxPerRoute(httpConnMaxPerRoute);
  return connManager;
}
  • 确保配置变量合法:在test环境配置文件(如application-test.yml)中明确配置正整数值:
http:
  conn:
    max-total: 20
    max-per-route: 10
  • 添加变量注入兜底值:如果用@Value注入变量,给变量设置合法默认值避免空值或非法值:
@Value("${http.conn.max-total:10}")
private int httpConnMaxTotal;

@Value("${http.conn.max-per-route:5}")
private int httpConnMaxPerRoute;

内容的提问来源于stack exchange,提问作者runnerpaul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 21:27:09