Es stellt sich heraus, dass das Festlegen dieser Konfigurationseigenschaften ziemlich einfach ist, aber die offizielle Dokumentation ist allgemeiner, so dass es möglicherweise schwierig ist, sie zu finden, wenn Sie speziell nach Konfigurationsinformationen für den Verbindungspool suchen.
Um die maximale Poolgröße für tomcat-jdbc festzulegen, legen Sie diese Eigenschaft in Ihrer .properties- oder .yml-Datei fest:
spring.datasource.maxActive=5
Sie können auch Folgendes verwenden, wenn Sie dies bevorzugen:
spring.datasource.max-active=5
Auf diese Weise können Sie jede gewünschte Verbindungspool-Eigenschaft festlegen. Hier finden Sie eine vollständige Liste der von unterstützten Funktionentomcat-jdbc
.
Um zu verstehen, wie dies allgemeiner funktioniert, müssen Sie sich ein wenig mit dem Spring-Boot-Code befassen.
Spring-Boot erstellt die DataSource folgendermaßen ( siehe hier , Zeile 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();
}
Der DataSourceBuilder ist dafür verantwortlich, herauszufinden, welche Poolbibliothek verwendet werden soll, indem er im Klassenpfad nach einer Reihe von bekannten Klassen sucht. Anschließend wird die DataSource erstellt und an die dataSource()
Funktion zurückgegeben.
An diesem Punkt beginnt die Verwendung von Magie @ConfigurationProperties
. Diese Anmerkung weist Spring an, nach Eigenschaften mit dem Präfix CONFIGURATION_PREFIX
( dh) zu suchen spring.datasource
. Für jede Eigenschaft, die mit diesem Präfix beginnt, versucht Spring, den Setter in der DataSource mit dieser Eigenschaft aufzurufen.
Die Tomcat DataSource ist eine Erweiterung von DataSourceProxy , die über die Methode verfügt setMaxActive()
.
Und so wird Ihr spring.datasource.maxActive=5
richtig angewendet!
Was ist mit anderen Verbindungspools?
Ich habe es nicht versucht, aber wenn Sie einen der anderen von Spring-Boot unterstützten Verbindungspools (derzeit HikariCP oder Commons DBCP) verwenden, sollten Sie die Eigenschaften auf die gleiche Weise festlegen können, aber Sie müssen sich das Projekt ansehen Dokumentation, um zu wissen, was verfügbar ist.