Hóa ra việc thiết lập các thuộc tính cấu hình này khá đơn giản, nhưng tài liệu chính thức chung chung hơn nên có thể khó tìm thấy khi tìm kiếm cụ thể thông tin cấu hình nhóm kết nối.
Để đặt kích thước nhóm tối đa cho tomcat-jdbc, hãy đặt thuộc tính này trong tệp .properties hoặc .yml của bạn:
spring.datasource.maxActive=5
Bạn cũng có thể sử dụng những thứ sau nếu muốn:
spring.datasource.max-active=5
Bạn có thể đặt bất kỳ thuộc tính nhóm kết nối nào bạn muốn theo cách này. Đây là danh sách đầy đủ các thuộc tính được hỗ trợ bởitomcat-jdbc
.
Để hiểu cách thức hoạt động tổng quát hơn, bạn cần tìm hiểu sâu về mã Spring-Boot một chút.
Spring-Boot xây dựng DataSource như thế này ( xem tại đây , dòng 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 chịu trách nhiệm tìm ra thư viện gộp nào sẽ sử dụng, bằng cách kiểm tra từng trong một loạt các lớp biết trên classpath. Sau đó, nó xây dựng DataSource và trả về dataSource()
hàm.
Tại thời điểm này, phép thuật phát huy tác dụng @ConfigurationProperties
. Chú thích này yêu cầu Spring tìm kiếm các thuộc tính có tiền tố CONFIGURATION_PREFIX
(là spring.datasource
). Đối với mỗi thuộc tính bắt đầu bằng tiền tố đó, Spring sẽ cố gắng gọi bộ thiết lập trên DataSource với thuộc tính đó.
Tomcat DataSource là một phần mở rộng của DataSourceProxy , có phương thức setMaxActive()
.
Và đó là cách bạn spring.datasource.maxActive=5
được áp dụng chính xác!
Điều gì về các nhóm kết nối khác
Tôi chưa thử, nhưng nếu bạn đang sử dụng một trong các nhóm kết nối được hỗ trợ Spring-Boot khác (hiện tại là HikariCP hoặc Commons DBCP), bạn sẽ có thể đặt các thuộc tính theo cách tương tự, nhưng bạn sẽ cần xem xét dự án tài liệu để biết những gì có sẵn.