Okazuje się, że ustawienie tych właściwości konfiguracyjnych jest dość proste, ale oficjalna dokumentacja jest bardziej ogólna, więc może być trudna do znalezienia podczas wyszukiwania informacji o konfiguracji puli połączeń.
Aby ustawić maksymalny rozmiar puli dla tomcat-jdbc, ustaw tę właściwość w pliku .properties lub .yml:
spring.datasource.maxActive=5
Jeśli wolisz, możesz również skorzystać z:
spring.datasource.max-active=5
W ten sposób możesz ustawić dowolną właściwość puli połączeń. Oto pełna lista właściwości obsługiwanych przeztomcat-jdbc
.
Aby ogólnie zrozumieć, jak to działa, musisz trochę zagłębić się w kod Spring-Boot.
Spring-Boot konstruuje źródło danych w następujący sposób ( zobacz tutaj , wiersz 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 jest odpowiedzialny za ustalenie, której biblioteki puli należy użyć, sprawdzając każdą z serii znanych klas w ścieżce klas. Następnie konstruuje DataSource i zwraca go do dataSource()
funkcji.
W tym momencie pojawia się magia @ConfigurationProperties
. Ta adnotacja mówi Springowi, aby szukał właściwości z przedrostkiem CONFIGURATION_PREFIX
(którym jest spring.datasource
). Dla każdej właściwości, która zaczyna się od tego prefiksu, Spring spróbuje wywołać metodę ustawiającą w DataSource z tą właściwością.
Tomcat DataSource jest rozszerzeniem DataSourceProxy , które ma tę metodę setMaxActive()
.
I w ten sposób twój spring.datasource.maxActive=5
jest poprawnie stosowany!
A co z innymi pulami połączeń
Nie próbowałem, ale jeśli używasz jednej z innych pul połączeń obsługiwanych przez Spring-Boot (obecnie HikariCP lub Commons DBCP), powinieneś być w stanie ustawić właściwości w ten sam sposób, ale musisz spojrzeć na projekt dokumentację, aby wiedzieć, co jest dostępne.