1. ホーム
  2. java

[解決済み] Spring-Bootです。JDBCプールの最大接続数などのプロパティはどのように設定するのですか?

2023-03-18 09:27:41

質問

Spring-Bootは非常に素晴らしいツールですが、より高度な設定に関しては、ドキュメントが少しまばらです。データベース接続プールの最大サイズのようなプロパティはどのように設定すればよいのでしょうか。

Spring-Bootがサポートしているのは tomcat-jdbc , HikariCPCommons DBCP をネイティブに設定するのは、すべて同じ方法ですか?

どのように解決するのですか?

これらの設定プロパティを設定することは、非常に簡単であることがわかりますが 公式ドキュメントの はより一般的なものなので、接続プールの設定情報を特に検索するときに見つけるのは難しいかもしれません。

tomcat-jdbc の最大プールサイズを設定するには、.properties または .yml ファイルにこのプロパティを設定します。

spring.datasource.maxActive=5

お好みで以下のようにすることもできます。

spring.datasource.max-active=5

この方法で、任意のコネクションプールのプロパティを設定することができます。 でサポートされているプロパティの完全なリストは以下のとおりです。 tomcat-jdbc .

この仕組みをより一般的に理解するためには、Spring-Bootのコードを少し掘り下げてみる必要があります。

Spring-BootはDataSourceをこのように構築します( はこちらをご覧ください , 行102)。

@ConfigurationProperties(prefix = DataSourceAutoConfiguration.CONFIGURATION_PREFIX)
@Bean
public DataSource dataSource() {
    DataSourceBuilder factory = DataSourceBuilder
            .create(this.properties.getClassLoader())
            .driverClassName(this.properties.getDriverClassName())
            .url(this.properties.getUrl())
            .username(this.properties.getUsername())
            .password(this.properties.getPassword());
    return factory.build();
}

DataSourceBuilderはクラスパス上にある一連のクラスをチェックすることによって、どのプーリングライブラリを使用するかを決定する役割を担っています。そして、DataSourceを構築し、それを dataSource() 関数に返します。

この時点で、マジックは @ConfigurationProperties . このアノテーションはSpringにプレフィクスとして CONFIGURATION_PREFIX (これは spring.datasource ). そのプレフィックスで始まる各プロパティに対して、Springはそのプロパティを持つDataSource上のセッターを呼び出そうとします。

TomcatのDataSourceは DataSourceProxy というメソッドを持っています。 setMaxActive() .

こうして、あなたの spring.datasource.maxActive=5 は正しく適用されます!

他のコネクションプールについてはどうでしょうか

試していませんが、Spring-Bootがサポートしている他の接続プール(現在はHikariCPかCommons DBCP)を使っている場合は、同じようにプロパティを設定できるはずですが、何が使えるかはプロジェクトのドキュメントを見る必要があります。