Nếu bạn đang sử dụng cấu hình tự động để xác định kết nối RDS từ tệp thuộc tính như sau:
cloud.aws.rds.testdb.password=testdbpwd
cloud.aws.rds.testdb.username=testdbuser
cloud.aws.rds.testdb.databaseName=testdb
Tự động cấu hình nguồn dữ liệu khởi động mùa xuân sẽ không hoạt động ngay cả khi bạn đặt chúng (hoặc nguồn dữ liệu tomcat conf) vào tệp cấu hình của bạn:
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.test-on-borrow: true
spring.datasource.validation-query: SELECT 1 FROM DUAL
spring.datasource.log-validation-errors: true
Tôi nghĩ đây là lý do tại sao bạn không thể xác thực các kết nối của mình trong nhóm trước khi sử dụng chúng.
Bạn cần ghi đè phương thức postProcessAfterInitialization để đặt thuộc tính nhóm của bean TomcatJdbcDataSourceFactory như sau:
@Component
public class PoolConfiguration implements BeanPostProcessor {
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
if (bean instanceof TomcatJdbcDataSourceFactory) {
TomcatJdbcDataSourceFactory tomcatJdbcDataSourceFactory = (TomcatJdbcDataSourceFactory) bean;
tomcatJdbcDataSourceFactory.setTestOnBorrow(true);
tomcatJdbcDataSourceFactory.setTestWhileIdle(true);
tomcatJdbcDataSourceFactory.setValidationQuery("SELECT 1");
}
return bean;
}
}
Tôi không thể tìm thấy bất kỳ giải pháp nào khác cho vấn đề này. Bằng cách này, đây có thể là lỗi của spring-cloud-aws-autoconfigure gói.
Chúc may mắn!