タグ (スペース区切り): druid springboot start autoconfig
そのため、2 番目のデータ ソースを構成するときに、システム負荷によってエラーが報告されました。
@Bean(name = "dataSource") @ConfigurationProperties(prefix = "ecommon.order.druid") public DataSource getOrderDataSource() { return new DruidDataSource(); }
「maxEvictableIdleTimeMillis」がスローした例外; ネストされた例外は java.lang.IllegalArgumentException: maxEvictableIdleTimeMillis は minEvictableIdleTimeMillis より大きくなければなりませんおそらく、「maxEvictableIdleTimeMillis」の最大生存時間は「minEvictableIdle」の最小生存時間より大きくなければならないことを意味しますタイムミリス。 最初の反応は、設定が間違っている、設定を確認するということでしょう。
##一个连接在池中最小生存的时间(ms) ecommon.order.druid.minEvictableIdleTimeMillis=300000 ##一个连接在池中最大生存的时间(ms) ecommon.order.druid.maxEvictableIdleTimeMillis=600000
github 検索 alibaba druid ホームページに移動し、直接 gith clone して、エラー プロンプトの場所を見つけます。
1: init メソッド
public void init() throws SQLException { if (maxEvictableIdleTimeMillis < minEvictableIdleTimeMillis) { throw new SQLException("maxEvictableIdleTimeMillis must be grater than minEvictableIdleTimeMillis"); }
public void setMaxEvictableIdleTimeMillis(long maxEvictableIdleTimeMillis) { if (maxEvictableIdleTimeMillis < 1000 * 30) { LOG.error("maxEvictableIdleTimeMillis should be greater than 30000"); } if (maxEvictableIdleTimeMillis < minEvictableIdleTimeMillis) { throw new IllegalArgumentException("maxEvictableIdleTimeMillis must be grater than minEvictableIdleTimeMillis"); } this.maxEvictableIdleTimeMillis = maxEvictableIdleTimeMillis; }
protected volatile long minEvictableIdleTimeMillis = DEFAULT_MIN_EVICTABLE_IDLE_TIME_MILLIS;
public static final long DEFAULT_MIN_EVICTABLE_IDLE_TIME_MILLIS = 1000L * 60L * 30L;
@Data @EqualsAndHashCode @ConfigurationProperties(prefix = "ecommon.order.druid") public class SqlServerDruidConfig { private Long minEvictableIdleTimeMillis; private Long maxEvictableIdleTimeMillis; }
@Autowired private SqlServerDruidConfig druidConfig; @Bean(name = "dataSource") @ConfigurationProperties(prefix = "ecommon.order.druid") public DataSource getOrderDataSource() { DruidDataSource dataSource = new DruidDataSource(); /**setMinEvictableIdleTimeMillis需要先设置*/ dataSource.setMinEvictableIdleTimeMillis(druidConfig.getMinEvictableIdleTimeMillis()); dataSource.setMaxEvictableIdleTimeMillis(druidConfig.getMaxEvictableIdleTimeMillis()); return dataSource; } @Bean public SqlServerDruidConfig getDruidConfig() { return new SqlServerDruidConfig(); }
問題の分析はここで終了します。この小さなバグは alibaba druid によって修正されました。
修正方法に興味がある場合は、druid の autoconfiger 修正に関するコードを参照してください:突然、あなたはすでにオープンソースの恩恵を受けていることがわかります。一緒に使用したり、一緒に問題を発見したり、一緒にバグを修正したりすることに参加できます。これは、Linux や git などの優れた芸術作品の背後にある核となる技術的価値である可能性があります。
以上がalibaba druid を使用して複数のデータ ソースに接続する場合の問題の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。