Виявляється, встановлення цих властивостей конфігурації є досить простим, але офіційна документація є більш загальною, тому її може бути важко знайти при спеціальному пошуку інформації про конфігурацію пулу з'єднань.
Щоб встановити максимальний розмір пулу для 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), ви повинні мати можливість встановлювати властивості так само, але вам потрібно буде поглянути на проект документацію, щоб знати, що доступно.